From c9973bbc5425e879c4f64f401a08d386a4e5790b Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 17 May 1999 23:22:45 +0000 Subject: Split Interrupt Manager into one routine per file. --- cpukit/rtems/src/intrcatch.c | 55 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 cpukit/rtems/src/intrcatch.c (limited to 'cpukit/rtems/src/intrcatch.c') diff --git a/cpukit/rtems/src/intrcatch.c b/cpukit/rtems/src/intrcatch.c new file mode 100644 index 0000000000..6ceedd7069 --- /dev/null +++ b/cpukit/rtems/src/intrcatch.c @@ -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 +#include +#include +#include + +/* 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; +} -- cgit v1.2.3