Changes between Version 16 and Version 17 of ioc_device_api
- Timestamp:
- Jan 22, 2020, 1:16:04 PM (4 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ioc_device_api
v16 v17 11 11 The "user" API contains the functions used by the user-level system calls, and defines four operation types : the '''IOC_READ''', '''IOC_WRITE''', '''IOC_SYNC_READ''', and '''IOC_SYNC_WRITE''' operations move a given number of contiguous blocks between the block device and a kernel memory buffer. This API is detailed in section C below. 12 12 13 * The '''asynchronous''' READ and WRITE operations are not directly executed by the client thread. The READ and WRITE requests are registered in the waiting queue rooted in the IOC chdev descriptor. These requests are actually handled by a dedicated server thread running in the cluster containing the chdev descriptor, that calls the ''ioc_driver_cmd()'' function.13 The '''asynchronous''' IOC_READ and IOC_WRITE operations are not directly executed by the client thread. The requests are registered in the waiting queue rooted in the IOC chdev descriptor. These requests are actually handled by a dedicated '''server thread''' running in the cluster containing the chdev descriptor, that calls the generic ''ioc_driver_cmd()'' function for each registered request. 14 14 15 * The '''synchronous''' SYNC_READ andSYNC_WRITE operations does not use the waiting queue, and does not use the server thread. The client thread calls directly the ''ioc_driver_cmd()'' function.15 The '''synchronous''' IOC_SYNC_READ and IOC_SYNC_WRITE operations does not use the waiting queue, and does not use the server thread. The client thread calls directly the ''ioc_driver_cmd()'' function. 16 16 17 17 Most IOC device hardware implementations have a DMA capability, and the data transfer is not done by the software, but is actually done by the hardware device. In this case, the IOC_IRQ signaling the transfer completion is routed to the core executing the server thread, and handled by the ''ioc_driver_isr()'' function (ISR stand for Interrupt Service Routine).