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_ */