Changeset 279 for trunk/kernel/devices/dev_pic.h
- Timestamp:
- Jul 27, 2017, 12:23:29 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kernel/devices/dev_pic.h
r205 r279 34 34 * to route a given IRQ to a given core, in a given cluster, and to help the interrupt 35 35 * handler to select and execute the relevant ISR (Interrupt Service Routine). 36 * It handles the following type of interrupts: 37 * - External IRQs generated by the external (shared) peripherals. 38 * - Internal IRQs generated by the internal (replicated) peripherals. 39 * - Timer IRQs generated by the timers (one timer per core). 40 * - Inter Processor IRQs (IPI) generated by software. 41 * 42 * In most supported manycores architectures, the PIC device contains two types 36 * It handles the four following types of interrupts: 37 * 38 * 1) EXT_IRQ (External IRQ) generated by the external (shared) peripherals. 39 * 2) INT_IRQ (Internal IRQ) generated by the internal (replicated) peripherals. 40 * 3) TIM_IRQ (Timer IRQ) generated by the timers (one timer per core). 41 * 4) IPI_IRQ (Inter Processor IRQ) generated by software (one IPI per core). 42 * 43 * In supported manycores architectures, the PIC device contains two types 43 44 * of hardware components: 44 45 * - the IOPIC is an external component, handling all external peripherals IRQs. … … 54 55 * at kernel initialization. 55 56 * 56 * The PIC device defines 4generic commands that can be used by each kernel instance,57 * The PIC device defines generic commands that can be used by each kernel instance, 57 58 * - to create in local cluster the PIC implementation specific interupt vector(s), 58 59 * - to bind a given IRQ (internal or external IRQ to a given core in the local cluster, … … 64 65 * cluster manager or to the core descriptors to register the interrupt vectors 65 66 * used by the kernel to select the relevant ISR when an interrupt is received 66 * by a given core in a given cluster.67 * by a given core in a given cluster. 67 68 68 69 * This PIC device does not execute itself I/O operations. It is just acting as a … … 87 88 typedef void (disable_irq_t) ( lid_t lid , xptr_t src_chdev_xp ); 88 89 typedef void (enable_timer_t) ( uint32_t period ); 90 typedef void (enable_ipi_t) ( ); 89 91 typedef void (send_ipi_t) ( cxy_t cxy , lid_t lid ); 90 92 typedef void (extend_init_t) ( uint32_t * lapic_base ); … … 96 98 disable_irq_t * disable_irq; /*! pointer on the driver "disable_irq" function */ 97 99 enable_timer_t * enable_timer; /*! pointer on the driver "enable_timer" function */ 100 enable_timer_t * enable_ipi; /*! pointer on the driver "enable_ipi" function */ 98 101 send_ipi_t * send_ipi; /*! pointer on the driver "send_ipi" function */ 99 102 extend_init_t * extend_init; /*! pointer on the driver "init_extend" function */ … … 186 189 187 190 /***************************************************************************************** 188 * This function enables remote IRQ generated by a remote chdev, defined by the191 * This function enables the IRQ generated by a remote chdev, defined by the 189 192 * <src_chdev_xp> argument. It can be called by any thread running in any cluster, 190 193 * and can be used for both internal & external IRQs. … … 199 202 * This function disables remote IRQ generated by a remote chdev, defined by the 200 203 * <src_chdev_xp> argument. It can be called by any thread running in any cluster, 201 * and can be used for both internal & external IRQs.204 * and can be used for both INT_IRq & EXT_IRQ. 202 205 ***************************************************************************************** 203 206 * @ lid : target core local index (in cluster containing the source chdev). … … 208 211 209 212 /***************************************************************************************** 210 * This function activates the TI CK timerfor the calling core.211 * The <period> argument define the number of cycles between IRQs.213 * This function activates the TIM_IRQ for the calling core. 214 * The <period> argument define the number of cycles between twoo successive IRQs. 212 215 ***************************************************************************************** 213 216 * @ period : number of cycles between IRQs. 214 217 ****************************************************************************************/ 215 218 void dev_pic_enable_timer( uint32_t period ); 219 220 /***************************************************************************************** 221 * This function activates the IPI_IRQ for the calling core. 222 ****************************************************************************************/ 223 void dev_pic_enable_ipi(); 216 224 217 225 /*****************************************************************************************
Note: See TracChangeset
for help on using the changeset viewer.