98a5231fe5
devfs_io() can't fall back to calling vfs_synchronous_io(), if the device driver doesn't support handling requests asynchronously. The presence of the io() hook leads the VFS (do_iterative_fd_io()) to believe that asynchronous handling is supported and set a finished-callback on the request which calls the io() hook to start the next chunk. Thus, instead of iterating through the request in a loop the iteration happens recursively. For sufficiently fragmented requests the stack may overflow (ticket #9900). * Introduce a new vnode operation supports_operation(). It can be called by the VFS to determine whether a present hook is actually currently supported for a given vnode. * devfs: implement the new hook and remove the fallback handling in devfs_io(). * vfs_request_io.cpp: use the new hook to determine whether the io() hook is really supported. |
||
---|---|---|
.. | ||
bus | ||
pcmcia | ||
tty | ||
usb | ||
ACPI.h | ||
atomizer.h | ||
bios.h | ||
bus_manager.h | ||
config_manager.h | ||
cpuidle.h | ||
device_manager.h | ||
disk_device_manager.h | ||
dpc.h | ||
driver_settings.h | ||
Drivers.h | ||
fs_cache.h | ||
fs_interface.h | ||
interrupt_controller.h | ||
io_requests.h | ||
ISA.h | ||
isapnp.h | ||
KernelExport.h | ||
locked_pool.h | ||
midi_driver.h | ||
mime_table.h | ||
module.h | ||
PCI_x86.h | ||
PCI.h | ||
Select.h | ||
USB2.h | ||
USB3.h | ||
USB_printer.h | ||
USB_rle.h | ||
USB_spec.h | ||
USB.h |