Changes between Version 14 and Version 15 of ioc_device_api


Ignore:
Timestamp:
Jan 21, 2020, 9:11:40 PM (5 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ioc_device_api

    v14 v15  
    1111The ''user'' API contains the functions used by the user-level system calls, and defines four operation types : the '''IOC_READ''', '''IOC_WRITE''', '''IOC_SYNC_READ''', and '''IOC_SYNC_WRITE''' operations move a given number of contiguous blocks between the block device and a kernel memory buffer. This API is detailed in section C below.
    1212
    13 * The '''asynchronous''' READ and WRITE operations are not directly executed by the client thread. The READ and WRITE requests are registered in the waiting queue rooted in the IOC chdev descriptor. These requests are actually handled by a dedicated server thread running in the cluster containing the chdev descriptor, that call the ''ioc_driver_cmd()'' function.
     13* The '''asynchronous''' READ and WRITE operations are not directly executed by the client thread. The READ and WRITE requests are registered in the waiting queue rooted in the IOC chdev descriptor. These requests are actually handled by a dedicated server thread running in the cluster containing the chdev descriptor, that calls the ''ioc_driver_cmd()'' function.
    1414
    1515* The '''synchronous''' SYNC_READ and SYNC_WRITE operations does not use the waiting queue, and does not use the server thread. The client thread calls directly the ''ioc_driver_cmd()'' function.
    1616
    17 Most IOC device implementation have a DMA capability, and the data transfer is not done by the software, but is actually done by the hardware device. The IOC IRQ signaling the transfer completion is routed to the core executing the server thread, and handled by the
    18 ''ioc_driver_isr()'' function (ISR stand for Interrupt Service Routine).
     17Most IOC device hardware implementations have a DMA capability, and the data transfer is not done by the software, but is actually done by the hardware device. In this case, the IOC_IRQ signaling the transfer completion is routed to the core executing the server thread, and handled by the ''ioc_driver_isr()'' function (ISR stand for Interrupt Service Routine).
    1918
    20 In the IOC-RDK implementation the IOC block device is actually implemented as physical memory. This IOC-RDK implementation does not use DMA, and does not use an IRQ. The data transfer is directly executed by the ''ioc_driver_cmd()''  software function.
     19An exception is the IOC-RDK implementation, where the block device is actually implemented as physical memory. This IOC-RDK implementation does not use DMA, and does not use an IRQ. The data transfer is directly executed by the ''ioc_driver_cmd()''  software function.
    2120
    2221To access the various drivers, the IOC device defines a lower-level ''driver'' API, that is detailed in section D below.
     
    3534
    3635== __C) User API__ ==
    37 
    38 
    3936
    4037These four I/O operations are blocking for the calling thread, but the blocking policy depends on the operation type.