Changes between Version 16 and Version 17 of io_operations


Ignore:
Timestamp:
Nov 3, 2016, 2:28:49 PM (10 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.