Changes between Version 17 and Version 18 of io_operations
- Timestamp:
- Nov 3, 2016, 2:59:13 PM (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
io_operations
v17 v18 71 71 This function is called by the server thread. It access to the peripheral hardware registers to start the I/O operation. Depending on the hardware peripheral implementation, can be blocking or non-blocking for the server thread. 72 72 * It is blocking on the THREAD_BLOCKED_DEV_ISR condition, if the hardware peripheral supports only one simultaneous I/O operation. Examples are a simple disk controller, or a text terminal controller. The blocked server thread must be re-activated by the ISR signaling completion of the current I/O operation. 73 * It is non-blocking if the hardware peripheral supports several simultaneous I/O operations. Example is an AHCI compliant disk controller. It blocks only if the number of simultaneous I/O operations becomes is larger than the max numbersupported by the hardware.73 * It is non-blocking if the hardware peripheral supports several simultaneous I/O operations. Example is an AHCI compliant disk controller. It blocks only if the number of simultaneous I/O operations becomes larger than the max number of concurrent operations supported by the hardware. 74 74 The ''thread'' argument is the extended pointer on the client thread, containing the embedded command descriptor. The ''device'' argument 75 75 is the local pointer on the device descriptor. 76 76 77 '''d iver_isr( xptr_t device )'''77 '''driver_isr( xptr_t device )''' 78 78 79 79 This function is executed in the client cluster, on the core running the client thread. It access the peripheral hardware register to get the I/O operation error status, acknowledge the IRQ, and unblock the client thread.