Changes between Version 16 and Version 17 of io_operations
- Timestamp:
- Nov 3, 2016, 2:28:49 PM (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
io_operations
v16 v17 44 44 This device directory being implemented as a global variable, is replicated in all clusters, and is initialized in the kernel initialization phase. 45 45 46 == C) Waiting queue Management ==46 == D) Waiting queue Management == 47 47 48 48 The commands waiting queue is implemented as a distributed XLIST, rooted in the device descriptor. To launch an I/O operation, any thread, running in any cluster, call a function of the device API. This function builds the command descriptor, registers the command in the thread descriptor, and registers the thread in the waiting queue. … … 55 55 Finally, each generic device descriptor contains a link to the specific driver associated to the available hardware implementation. This link is established in the kernel initialization phase. 56 56 57 == D) Drivers API ==57 == E) Drivers API == 58 58 59 59 To start an I/O operation the server thread associated to the device must call the specific driver corresponding to the hardware peripheral available in the manycore architecture. … … 81 81 The ''device'' argument is the extended pointer on the device descriptor. 82 82 83 == E) Implementation ==83 == F) Implementation == 84 84 85 85 It is worth to note that this general I/O operation mechanism involve generally three clusters (client cluster / server cluster / IO cluster), but does not use any RPC: 86 86 * to post a new command in the waiting queue of a given (remote) device descriptor, the client thread uses only few remote access to be registered in the distributed XLIST rooted in the server cluster. 87 * to launch the I/O operation on the (remote) peripheral, the server thread uses only remote access accessthe physical registers located in the I/O cluster.88 * To complete the I/O operation, the ISR running on the client cluster access peripheral registers in I/O clusters, reports I/O operation status in the command descriptor, and unblock client and server thread using onlyremote accesses.87 * to launch the I/O operation on the (remote) peripheral, the server thread uses only remote access to the physical registers located in the I/O cluster. 88 * To complete the I/O operation, the ISR running on the client cluster access peripheral registers in I/O clusters, reports I/O operation status in the command descriptor, and unblock client thread and server thread, using only local or remote accesses.