Changes between Version 16 and Version 17 of io_operations


Ignore:
Timestamp:
Nov 3, 2016, 2:28:49 PM (7 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • io_operations

    v16 v17  
    4444This device directory being implemented as a global variable, is replicated in all clusters, and is initialized in the kernel initialization phase.
    4545
    46 == C) Waiting queue Management ==
     46== D) Waiting queue Management ==
    4747
    4848The 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.
     
    5555Finally, 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.
    5656
    57 == D) Drivers API ==
     57== E) Drivers API ==
    5858
    5959To 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.
     
    8181The ''device'' argument is the extended pointer on the device descriptor.
    8282
    83 == E) Implementation ==
     83== F) Implementation ==
    8484
    8585It 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:
    8686 * 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 access 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 and server thread using only remote 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.