openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

interrupts_handler.h (2126B)


      1 /*
      2  * 
      3  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      4  * 
      5  * Copyright 2007-2020 Broadcom Inc. All rights reserved.
      6  */
      7 
      8 #ifndef _DPP_INTERRUPTS_HANDLER_H_
      9 #define _DPP_INTERRUPTS_HANDLER_H_
     10 
     11 #include <soc/dpp/ARAD/arad_interrupts.h>
     12 
     13 typedef int (* arad_handle_interrupt_func)(int unit, int block_instance, arad_interrupt_type en_arad_interrupt, char *msg);
     14 
     15 /*
     16  * static data strucure which holds the info about: 
     17  *             the function suppose to run for each interrupt
     18  *              info about storm threshold
     19  */
     20 struct arad_interrupt_handle_data_base {
     21     arad_handle_interrupt_func *func_arr;/*interrupt action, always run it*/
     22 
     23     /* recurring action function/params */
     24     arad_handle_interrupt_func *func_arr_recurring_action;/*interrupt action, run it only in a storm*/
     25     int *recurring_action_counters;
     26     int *recurring_action_time; 
     27     int *recurring_action_cycle_time;  /*time in seconds of each cycle, -1 is without recurring_action*/
     28     int *recurring_action_cycle_counting;  /*threshold in each cycle, -1 is without recurring_action*/
     29 };
     30 typedef struct arad_interrupt_handle_data_base arad_interrupt_handle_data_base_t;
     31 
     32 /* 
     33  * Main CallBack Function
     34  */
     35 void diag_arad_switch_event_cb(int unit, bcm_switch_event_t event, uint32 arg1, uint32 arg2, uint32 arg3, void *userdata);
     36 
     37 /*
     38  *  init the  data base the first time using it.  
     39  */
     40 int arad_interrupt_handler_data_base_init(int unit);
     41 
     42 /*
     43  * add_interrupt_handler (without storm threshold)
     44  * input: 
     45  * enInter - the interrupt.
     46  * interruptHandler - how to handle the interrupt.
     47  */
     48 int arad_interrupt_add_interrupt_handler(int unit, arad_interrupt_type en_arad_inter, int occurrences, int timeCycle, arad_handle_interrupt_func inter_action, arad_handle_interrupt_func inter_recurring_action);
     49 
     50 int arad_handle_interrupt_recurring_detect(int unit, int block_instance, arad_interrupt_type en_arad_interrupt);
     51 
     52 int arad_interrupt_handler_appl_init(int unit);
     53 
     54 int arad_interrupt_handler_appl_deinit(int unit);
     55 
     56 
     57 #endif /*__DPP_INTERRUPTS_HANDLER_H_ */