Changes between Version 19 and Version 20 of ioc_device_api
- Timestamp:
- Jan 22, 2020, 3:01:23 PM (4 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ioc_device_api
v19 v20 37 37 These four I/O operations are blocking and return only when the transfer is completed, but the blocking policy depends on the operation type. 38 38 39 === C.1) Asynchronous operations === 39 '''C.1) Asynchronous operations''' 40 40 41 41 * The '''dev_ioc_read( xptr_t buffer_xp , uint32_t lba , uint32_t count )''' blocking function moves <count> contiguous blocks from the block device, starting from block defined by the <lba> argument, to a kernel buffer defined by the <buffer_xp> argument. It register the request in the IOC device waiting queue. Then it blocks and deschedules. … … 49 49 Note : According to the scheduler policy, the DEV threads have an higher priority than the USR threads, and a DEV thread keep blocked when the associated waiting queue is empty. 50 50 51 === C.2) Synchronous operations === 51 '''C.2) Synchronous operations''' 52 52 53 53 * The '''dev_ioc_sync_read( xptr_t buffer_xp , uint32_t lba , uint32_t count )''' blocking function moves <count> contiguous blocks from the block device, starting from block defined by the <lba> argument, to a kernel buffer defined by the <buffer_xp> argument. It calls directly the IOC driver without rescheduling, and without using the IOC device waiting queue and the server thread.