* Implemented the fuse_fs_*() functions.
* More work on the initialization procedure for the client file system. We do
now start a separate thread which calls the main() function. It won't return
from fuse_main_real() until unmounting the FS. We create a fuse_fs structure
and call the client FS initialization and cleanup hooks.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29613 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Use atomic_or() to update sig_pending of the main thread.
* We didn't call update_thread_signals_flag() for the main thread, so its
handle_signals() wouldn't be called, resulting in an infinite loop, if this
signal interrupted a restartable syscall. Calling exit() from another thread
than the main thread was likely to run into this problem. Should fix#3178.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29612 a95241bf-73f2-0310-859d-f6bbb57e9c96
which auto-generates dependencies. It was written by Lars Duening for BeOS
and uses libglob, which is also part of make. To re-use libglob and since
make is already part of the Haiku tree, I added mkdepend to the bin tools.
* Added Lars Duening's copyright to AboutSystem.
* Added skeleton makefile and makefile-engine to data/develop.
* Added mkdepend and makefile-engine files to the Development optional package.
It could be argued to move the make bin command there too, from it's current
location in the HaikuImage file. However, make could be useful to always
have available.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29609 a95241bf-73f2-0310-859d-f6bbb57e9c96
--alternative-gcc-output-dir configure option has been specified,
HAIKU_ADD_ALTERNATIVE_GCC_LIBS is set by default. One has to explicitely
unset it in UserBuildConfig to avoid building the alternative gcc libs.
* Adjusted documentation accordingly.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29607 a95241bf-73f2-0310-859d-f6bbb57e9c96
improvements. I added mentioning the UserBuildConfig a couple more times
further down, just in case someone skipped these parts. Then the mentioned
commands won't work.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29606 a95241bf-73f2-0310-859d-f6bbb57e9c96
it was done in SAS/C... (yeah, that was ages ago). This fixes bug #2030.
* Also, we should probably check if the area we're about to shrink/remove
actually is a reserved area.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29605 a95241bf-73f2-0310-859d-f6bbb57e9c96
to manage this, avoid locking the main sLock in notification handling methods. Instead fill up two lists which will be emptied later by the kernel daemon thread.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29603 a95241bf-73f2-0310-859d-f6bbb57e9c96
when applications are expanded in the Deskbar.)
* Simplified setting B_OP_COPY drawing mode.
* PopState() at the end of drawing, not before.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29601 a95241bf-73f2-0310-859d-f6bbb57e9c96
sufficient to build sshfs-fuse, though. Obviously it doesn't actually work yet.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29595 a95241bf-73f2-0310-859d-f6bbb57e9c96
the gDeviceNameList[] entries are no longer in the same order.
* This fixes bug #3124.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29593 a95241bf-73f2-0310-859d-f6bbb57e9c96
is done with it, since we still need to serve file cache requests.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29587 a95241bf-73f2-0310-859d-f6bbb57e9c96
put_vnode() might be removed from our map, if that was the last reference to
the node, so _DecrementVNodeCount() would emit an error message -- harmless
but annoying. :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29586 a95241bf-73f2-0310-859d-f6bbb57e9c96
and probably only works for CDs as is (ie. not for USB sticks).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29584 a95241bf-73f2-0310-859d-f6bbb57e9c96
something comes in -- this could be greatly improved, though.
* Cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29583 a95241bf-73f2-0310-859d-f6bbb57e9c96
device additions/removals can be monitored.
* Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29582 a95241bf-73f2-0310-859d-f6bbb57e9c96
kernel implementation ignores, so we should allow that in userland, too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29580 a95241bf-73f2-0310-859d-f6bbb57e9c96
too. It's slightly adjusted to use the thread blocking syscalls and a benaphore
style threads spinlock replacement. This solves the following problems:
* The static mutex/rwlock initializers are safe now.
* The rwlock implementation is compatible with the kernel implementation. E.g.
a write lock owner can acquire a read lock, which would dead-lock before.
* We don't use semaphores anymore. With a userland BFS one could quite easily
hit the global semaphore limit before.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29579 a95241bf-73f2-0310-859d-f6bbb57e9c96
makes them more convenient to use, since the caller doesn't need to know the
target threads' user thread structure.
* Adjusted the pthread rwlock implementation accordingly.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29578 a95241bf-73f2-0310-859d-f6bbb57e9c96
the free list. Do that with the threads lock held. This allows other threads
to freely access a thread's user thread structure while holding the threads
lock.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29577 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Increment the vnode reference count in NewVNode().
* Introduced a VNode::published flag that allows PublishVNode() (a) to discard
the node on error and (b) not to increment the node's reference count in case
the node had been created by NewVNode() before.
* Added missing fVNodeCountingEnabled check in _RemoveInvalidVNode().
* _PutAllPendingVNodes():
- nodeFound was never reset, so it would loop forever, if there was at
least one node that needed to be put.
- VNode::useCount needs to be set to 0 explicitely. Since vnode reference
count tracking is already disabled PutVNode() doesn't decrement it and
thus we would loop forever, respectively cause the VFS to panic() first.
- If the node has not been published, we need to publish it before putting
it, since otherwise the VFS would complain that the node is busy.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29576 a95241bf-73f2-0310-859d-f6bbb57e9c96
class must take care of these things.
* Automatic whitespace cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29574 a95241bf-73f2-0310-859d-f6bbb57e9c96
We do some caching using a hash table indexed by the operations vector.
* Pass the vnode capabilities to the kernel module.
* In the kernel tailor the operation vectors for volumes and vnodes passed to
the VFS according to the respective capabilities. This way those vectors look
pretty much like those from the client FS. This saves unnecessary calls when
hooks are not implemented and should also fix compatibility problems in cases
where not implementing a hook and returning an error don't mean the same to
the VFS.
* Inlined some of the kernel module Volume class getters.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29572 a95241bf-73f2-0310-859d-f6bbb57e9c96