History log of /haiku/src/add-ons/kernel/file_systems/userlandfs/server/kernel_emu.h
Revision Date Author Comments
# c77f643a 20-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Added support for in-kernel node monitoring ({add,remove}_node_listener()).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34147 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8af6418b 19-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Implemented support for the recently introduced I/O request calls
io_request_{offset,length}(), {read_from,write_to}_io_request().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34137 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 07745f2a 30-Jul-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Added support for new notify_io_request() function.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31970 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4649fe05 17-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Haiku kernel interface emulation: Retrieve the capabilities for each vnode.
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


# 687e02f9 14-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Forward the io() and cancel_io() hooks. Implemented the missing kernel
part.
* Implemented a good part of the kernel part for the support of
do_iterative_fd_io(). The forwarding of the callbacks are missing yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29540 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7c1ffcb9 13-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* The nature of asynchronous I/O is to be asynchronous. So we can't store
an on-stack structure for the request in a hash table when forwarding the
io() hook. Create a new object (HaikuKernelIORequest) instead and store it
in a hash table in HaikuKernelFileSystem.
* Some work on the userland side of do_iterative_fd_io().
* Added some missing requests in UserlandFSUtil::is_{kernel,userland}_request().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29505 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0dcccb49 04-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Implemented the client side of the file cache operations.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29401 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9accd619 01-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* FileSystem does now have a list of all volumes. This allows to get a volume
by ID.
* Added a three parameters version of UserlandFS::KernelEmu::publish_vnode(),
which is used by the BeOS new_vnode() emulation. It calls the new
Volume::GetVNodeType() to get the type of the node.

Theoretically BeOS FS interface style add-ons should work again, but ATM we
crash the kernel when trying to mount.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29367 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3594d63b 27-Feb-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Got the kernel interface compiling.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29333 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cdebdeb0 25-Feb-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Some more work towards adjusting the UserlandFS to the current FS interface:
* Split the FSCapabilities bit mask into three bit masks for the FS, the
volume, and the vnodes, since we have three independent FS interface
structures, now. The latter is not supported in the kernel add-on, yet.
* Server:
- Temporarily removed some things from the build (the BeOS interface
and the cache implementations).
- Some WIP in HaikuKernelVolume and [haiku_]kernel_emu.{h,cpp}.
- Added HaikuKernelNode, which wraps fs_vnode for the client FS.
The server is still quite a bit away from being buildable again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29323 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 636bfc08 02-Oct-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Renamed fs/vfs_select.cpp to wait_for_objects.cpp and got rid of
vfs_select.h, respectively moved most of it into the new kernel
private header wait_for_objects.h.
* Added new experimental API functions wait_for_objects[_etc](). They
work pretty much like poll(), but also for semaphores, ports, and
threads.
* Removed the "ref" parameter from notify_select_events() and the
select_sync_pool functions as well as from fd_ops::fd_[de]select(). It
is no longer needed. The FS interface select() hook still has it,
though -- the VFS will always pass 0.
* de]select_fd() take a select_info* instead of a select_sync* + ref
pair, now. Added respective functions for semaphores, ports, and
threads.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22416 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 245aecda 21-Jun-2007 Axel Dörfler <axeld@pinc-software.de>

Got rid of vnode_id and mount_id, replaced with ino_t and dev_t.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21485 a95241bf-73f2-0310-859d-f6bbb57e9c96


# de71c581 27-Mar-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Added parse_expression() to the kernel emulation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20436 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 824e907a 11-Mar-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Added Haiku block cache interface to the UserlandFS server. Basically
copied and adjusted the respective kernel code.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20367 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4ed322c6 05-Mar-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added support for interfacing with Haiku style FS modules (yet
untested).
* Added library with the relevant part of the Haiku kernel interface.
The cache interface is missing, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20340 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 97dd0fe3 01-Mar-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Adjusted according to the is_vnode_removed() -> get_vnode_removed()
change.
* The new notification functions are used instead of send_notification()
and notify_listener() now. Mapped them in the BeOS kernel emulation
accordingly. RamFS node monitoring seems to work now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20298 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c10705cb 28-Feb-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

We do now provide the BeOS style FS add-ons with the kernel interface they
need via library libuserlandfs_beos_kernel.so. Fine-tuned the legacy headers
so they can by used by the the kernel interface emulation code as well as by
the add-ons. This is actually a bit hacky, since we build everything in the
Haiku build environment and thus mix these old headers and Haiku's.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20254 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ca6faf49 27-Feb-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Adjusted BeOSKernelFileSystem and BeOSKernelVolume to Haiku's FS interface.
* Moved stuff need for the BeOS interface only into the beos_* namespace.
* Shuffled a few things around to reduce the block cache implementation
dependencies. compat.h and sysdep.c are gone accordingly.
* The whole UserlandFSServer builds now and could (at least theorectically)
drive a FS add-on implementing the old interface. The required emulation of
the BeOS kernel is not yet provided, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20247 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c77f643a2b3f3990e6f355d6c333537b9cbfd88f 20-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Added support for in-kernel node monitoring ({add,remove}_node_listener()).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34147 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8af6418b5c35c7c7b4a008783ffde29448b01f99 19-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Implemented support for the recently introduced I/O request calls
io_request_{offset,length}(), {read_from,write_to}_io_request().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34137 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 07745f2a0b9f21a8c92326dd8a39d5a8d9a0049c 30-Jul-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Added support for new notify_io_request() function.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31970 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4649fe05ef03c9981231538121df35aab32f2bc0 17-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Haiku kernel interface emulation: Retrieve the capabilities for each vnode.
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


# 687e02f9457b4cf0a13495467d561f5c08d84868 14-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Forward the io() and cancel_io() hooks. Implemented the missing kernel
part.
* Implemented a good part of the kernel part for the support of
do_iterative_fd_io(). The forwarding of the callbacks are missing yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29540 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7c1ffcb9ec70c1bb997a4ecb9a9af82d5a657297 13-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* The nature of asynchronous I/O is to be asynchronous. So we can't store
an on-stack structure for the request in a hash table when forwarding the
io() hook. Create a new object (HaikuKernelIORequest) instead and store it
in a hash table in HaikuKernelFileSystem.
* Some work on the userland side of do_iterative_fd_io().
* Added some missing requests in UserlandFSUtil::is_{kernel,userland}_request().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29505 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0dcccb4986bbae888c2dab92cd4c02efab945909 04-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Implemented the client side of the file cache operations.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29401 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9accd619b893cbb1ca577e1230ec77e988460f13 01-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* FileSystem does now have a list of all volumes. This allows to get a volume
by ID.
* Added a three parameters version of UserlandFS::KernelEmu::publish_vnode(),
which is used by the BeOS new_vnode() emulation. It calls the new
Volume::GetVNodeType() to get the type of the node.

Theoretically BeOS FS interface style add-ons should work again, but ATM we
crash the kernel when trying to mount.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29367 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3594d63b342ee2592a094107f4aeb2e4872f2d2d 27-Feb-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Got the kernel interface compiling.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29333 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cdebdeb0aa35c9eabf093024474c865ce9bd6840 25-Feb-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Some more work towards adjusting the UserlandFS to the current FS interface:
* Split the FSCapabilities bit mask into three bit masks for the FS, the
volume, and the vnodes, since we have three independent FS interface
structures, now. The latter is not supported in the kernel add-on, yet.
* Server:
- Temporarily removed some things from the build (the BeOS interface
and the cache implementations).
- Some WIP in HaikuKernelVolume and [haiku_]kernel_emu.{h,cpp}.
- Added HaikuKernelNode, which wraps fs_vnode for the client FS.
The server is still quite a bit away from being buildable again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29323 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 636bfc08aeaaa7f1bab813c5aa2e8e666b40ec64 02-Oct-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Renamed fs/vfs_select.cpp to wait_for_objects.cpp and got rid of
vfs_select.h, respectively moved most of it into the new kernel
private header wait_for_objects.h.
* Added new experimental API functions wait_for_objects[_etc](). They
work pretty much like poll(), but also for semaphores, ports, and
threads.
* Removed the "ref" parameter from notify_select_events() and the
select_sync_pool functions as well as from fd_ops::fd_[de]select(). It
is no longer needed. The FS interface select() hook still has it,
though -- the VFS will always pass 0.
* de]select_fd() take a select_info* instead of a select_sync* + ref
pair, now. Added respective functions for semaphores, ports, and
threads.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22416 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 245aecda8ac43fc2c0c0bac6a7e4016efa9b71e1 21-Jun-2007 Axel Dörfler <axeld@pinc-software.de>

Got rid of vnode_id and mount_id, replaced with ino_t and dev_t.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21485 a95241bf-73f2-0310-859d-f6bbb57e9c96


# de71c5816521bc6ede1fb9bfedebc1564d5449a5 27-Mar-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Added parse_expression() to the kernel emulation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20436 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 824e907a2c8692631a9dd79405e227cadd83e6b4 11-Mar-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Added Haiku block cache interface to the UserlandFS server. Basically
copied and adjusted the respective kernel code.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20367 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4ed322c66e3cc29cc19e3a6b515ea06d1d2d4446 05-Mar-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added support for interfacing with Haiku style FS modules (yet
untested).
* Added library with the relevant part of the Haiku kernel interface.
The cache interface is missing, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20340 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 97dd0fe3c8a9d971b75753a40e9d0f4278b46d66 01-Mar-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Adjusted according to the is_vnode_removed() -> get_vnode_removed()
change.
* The new notification functions are used instead of send_notification()
and notify_listener() now. Mapped them in the BeOS kernel emulation
accordingly. RamFS node monitoring seems to work now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20298 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c10705cbda18d5e2fc112bf9daecde68cd37b907 28-Feb-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

We do now provide the BeOS style FS add-ons with the kernel interface they
need via library libuserlandfs_beos_kernel.so. Fine-tuned the legacy headers
so they can by used by the the kernel interface emulation code as well as by
the add-ons. This is actually a bit hacky, since we build everything in the
Haiku build environment and thus mix these old headers and Haiku's.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20254 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ca6faf4958b94cfc53255e99e4868c110837da4e 27-Feb-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Adjusted BeOSKernelFileSystem and BeOSKernelVolume to Haiku's FS interface.
* Moved stuff need for the BeOS interface only into the beos_* namespace.
* Shuffled a few things around to reduce the block cache implementation
dependencies. compat.h and sysdep.c are gone accordingly.
* The whole UserlandFSServer builds now and could (at least theorectically)
drive a FS add-on implementing the old interface. The required emulation of
the BeOS kernel is not yet provided, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20247 a95241bf-73f2-0310-859d-f6bbb57e9c96