Split Interrupt Manager into one routine per file.

This commit is contained in:
Joel Sherrill
1999-05-17 23:22:45 +00:00
parent 0123e3be53
commit c9973bbc54
5 changed files with 118 additions and 77 deletions

View File

@@ -24,6 +24,13 @@ TASK_PIECES=\
taskmode taskrestart taskresume tasksetnote tasksetpriority \
taskstart tasksuspend taskwakeafter taskwakewhen
RATEMON_PIECES=\
ratemon ratemoncancel ratemoncreate ratemondelete ratemongetstatus \
ratemonident ratemonperiod ratemontimeout
INTR_PIECES=\
intr intrbody intrcatch
CLOCK_PIECES=\
clock clockget clockset clocktick
@@ -46,10 +53,6 @@ EVENT_PIECES=\
SIGNAL_PIECES=\
signal signalcatch signalsend
RATEMON_PIECES=\
ratemon ratemoncancel ratemoncreate ratemondelete ratemongetstatus \
ratemonident ratemonperiod ratemontimeout
REGION_PIECES=\
region regioncreate regiondelete regionextend regiongetsegment \
regiongetsegmentsize regionident regionreturnsegemnt regionreturnsegemnt
@@ -63,7 +66,7 @@ DPMEM_PIECES=\
C_PIECES=\
attr $(TASK_PIECES) $(RATEMON_PIECES) \
intr intrbody \
$(INTR_PIECES) \
$(CLOCK_PIECES) $(TIMER_PIECES) \
$(SEMAPHORE_PIECES) $(MESSAGE_QUEUE_PIECES) \
$(EVENT_PIECES) $(SIGNAL_PIECES) \

View File

@@ -30,39 +30,3 @@
void _Interrupt_Manager_initialization( void )
{
}
/* rtems_interrupt_catch
*
* This directive allows a thread to specify what action to take when
* catching signals.
*
* Input parameters:
* new_isr_handler - address of interrupt service routine (isr)
* vector - interrupt vector number
* old_isr_handler - address at which to store previous ISR address
*
* Output parameters:
* RTEMS_SUCCESSFUL - always succeeds
* *old_isr_handler - previous ISR address
*/
rtems_status_code rtems_interrupt_catch(
rtems_isr_entry new_isr_handler,
rtems_vector_number vector,
rtems_isr_entry *old_isr_handler
)
{
if ( !_ISR_Is_vector_number_valid( vector ) )
return RTEMS_INVALID_NUMBER;
if ( !_ISR_Is_valid_user_handler( (void *) new_isr_handler ) )
return RTEMS_INVALID_ADDRESS;
if ( !_ISR_Is_valid_user_handler( (void *) old_isr_handler ) )
return RTEMS_INVALID_ADDRESS;
_ISR_Install_vector(
vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler );
return RTEMS_SUCCESSFUL;
}

View File

@@ -0,0 +1,55 @@
/*
* Interrupt Manager
*
*
* COPYRIGHT (c) 1989-1998.
* On-Line Applications Research Corporation (OAR).
* Copyright assigned to U.S. Government, 1994.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $Id$
*/
#include <rtems/system.h>
#include <rtems/rtems/status.h>
#include <rtems/score/isr.h>
#include <rtems/rtems/intr.h>
/* rtems_interrupt_catch
*
* This directive allows a thread to specify what action to take when
* catching signals.
*
* Input parameters:
* new_isr_handler - address of interrupt service routine (isr)
* vector - interrupt vector number
* old_isr_handler - address at which to store previous ISR address
*
* Output parameters:
* RTEMS_SUCCESSFUL - always succeeds
* *old_isr_handler - previous ISR address
*/
rtems_status_code rtems_interrupt_catch(
rtems_isr_entry new_isr_handler,
rtems_vector_number vector,
rtems_isr_entry *old_isr_handler
)
{
if ( !_ISR_Is_vector_number_valid( vector ) )
return RTEMS_INVALID_NUMBER;
if ( !_ISR_Is_valid_user_handler( (void *) new_isr_handler ) )
return RTEMS_INVALID_ADDRESS;
if ( !_ISR_Is_valid_user_handler( (void *) old_isr_handler ) )
return RTEMS_INVALID_ADDRESS;
_ISR_Install_vector(
vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler );
return RTEMS_SUCCESSFUL;
}