Changes between Version 4 and Version 5 of icu_device_api


Ignore:
Timestamp:
Nov 4, 2016, 11:47:30 AM (7 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • icu_device_api

    v4 v5  
    2727Each entry in one interrupt vector array (defining one IRQ type and index) contains an extended pointer on the device descriptor that is the "source" of the interrupt. This device descriptor contains a link to the ISR to be executed to handle the interrupt event.
    2828
    29 The generic ICU device working for a single client that is the local kernel instance, it does not use the device descriptor  queue.
    30 All commands are immediately executed, and use the device lock to get exclusive access to the ICU device state.
     29As the generic ICU device works for a single client (the local kernel instance), it does not use the device descriptor  queue.
     30All commands are immediately executed, using the device lock to get exclusive access to the ICU device state.
    3131
    3232== B) Access Functions ==
     
    5656The <core> argument is local pointer on the target core. The <pti_id> argument is the timer index.
    5757The <period> argument is the period value (number of cycles).
    58 It return 0 if success / returns EINVAL if illegal arguments.
     58It returns 0 if success / returns EINVAL if illegal arguments.
    5959
     60=== 5) '''error_t dev_icu_send_ipi'''( cxy_t    cxy , lid_t    lid ) ===
    6061
    61 /*****************************************************************************************
    62  * This function send an IPI (Inter Processor Interrupt) to a core identified by
    63  * its cluster identifier and local index.
    64  * This IPI force a context switch, and the handling of pending RPC(s).
    65  *****************************************************************************************
    66  * @ cxy      : destination cluster identifier.
    67  * @ lid      : destination core local index.
    68  * @ return 0 if success (IPI registered) / returns EINVAL if illegal cxy or lid.
     62This function send an IPI (Inter Processor Interrupt) to a core identified by its cluster identifier and local index.
     63This IPI force a context switch, and the handling of pending RPC(s).
     64The <cxy> argument is the destination cluster identifier. The <lid> argument is the  destination core local index.
     65It returns 0 if success / returns EINVAL if illegal arguments.
     66
     67=== 6) '''void dev_icu_irq_handler'''() ===
     68
     69This function is called by a core when it receives an IRQ from the ICU device.
     70It access the local ICU device descriptor to get the highest priority active IRQ of each type (HWI / WTI / PTI).
     71 * If it is a WTI or an HWI, the function uses the calling core interrupt-vectors to call the relevant ISR, registered in the source device descriptor.
     72 * If it is a PTI, the source device descriptor is the ICU device itself, and it call the core_clock() function to execute all operations related to the TICK event.
    6973 ****************************************************************************************/
    70 error_t dev_icu_send_ipi( cxy_t    cxy,
    71                           lid_t    lid );
    72 
    73 /*****************************************************************************************
    74  * This function is called by a core when it receives an IRQ from the ICU device.
    75  * It access the local ICU device descriptor to get the highest priority IRQ
    76  * of each type (HWI / WTI / PTI).
    77  * - If it is a WTI or an HWI, the function uses the calling core interrupt-vectors
    78  *   to call the relevant ISR, registered in the source device descriptor.
    79  * - If it is a PTI, the source device descriptor is the ICU device itself, and it
    80  *   call the core_clock() function to execute all operations related to the TICK event.
    81  ****************************************************************************************/
    82 void dev_icu_irq_handler();