void bsp_interrupt_initialize(void) { rtems_status_code sc = RTEMS_SUCCESSFUL; size_t i = 0; /* Initialize handler table */ for (i = 0; i < BSP_INTERRUPT_HANDLER_TABLE_SIZE; ++i) { bsp_interrupt_handler_table [i].handler = bsp_interrupt_handler_empty; bsp_interrupt_handler_table [i].arg = (void *) i; } sc = bsp_interrupt_facility_initialize(); if (sc != RTEMS_SUCCESSFUL) { bsp_fatal(BSP_FATAL_INTERRUPT_INITIALIZATION); } bsp_interrupt_set_initialized(); }
rtems_status_code bsp_interrupt_initialize(void) { rtems_status_code sc = RTEMS_SUCCESSFUL; size_t i = 0; sc = bsp_interrupt_lock(); if (sc != RTEMS_SUCCESSFUL) { return sc; } /* We need one semaphore */ if (_System_state_Is_before_initialization(_System_state_Get())) { Configuration.work_space_size += sizeof(Semaphore_Control); ++Configuration_RTEMS_API.maximum_semaphores; } if (bsp_interrupt_is_initialized()) { bsp_interrupt_unlock(); return RTEMS_INTERNAL_ERROR; } /* Initialize handler table */ for (i = 0; i < BSP_INTERRUPT_HANDLER_TABLE_SIZE; ++i) { bsp_interrupt_handler_table [i].handler = bsp_interrupt_handler_empty; bsp_interrupt_handler_table [i].arg = (void *) i; } sc = bsp_interrupt_facility_initialize(); if (sc != RTEMS_SUCCESSFUL) { bsp_interrupt_unlock(); return sc; } bsp_interrupt_set_initialized(); sc = bsp_interrupt_unlock(); if (sc != RTEMS_SUCCESSFUL) { return sc; } return RTEMS_SUCCESSFUL; }