summaryrefslogtreecommitdiffstats
path: root/c/src/librtems++/src/rtemsInterrupt.cc
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/librtems++/src/rtemsInterrupt.cc')
-rw-r--r--c/src/librtems++/src/rtemsInterrupt.cc126
1 files changed, 0 insertions, 126 deletions
diff --git a/c/src/librtems++/src/rtemsInterrupt.cc b/c/src/librtems++/src/rtemsInterrupt.cc
deleted file mode 100644
index fee91bdac9..0000000000
--- a/c/src/librtems++/src/rtemsInterrupt.cc
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- ------------------------------------------------------------------------
-
- COPYRIGHT (c) 1997
- Objective Design Systems Ltd Pty (ODS)
- All rights reserved (R) Objective Design Systems Ltd Pty
-
- The license and distribution terms for this file may be found in the
- file LICENSE in this distribution or at
- http://www.rtems.org/license/LICENSE.
-
- ------------------------------------------------------------------------
-
- See header file.
-
- ------------------------------------------------------------------------
-*/
-
-#include <rtems++/rtemsInterrupt.h>
-
-#if (CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE)
-
-/* ----
- Interrupt Table
-
- This table is used to re-direct the call from RTEMS to a user
- object
-*/
-
-static rtemsInterrupt **interrupt_table;
-
-// has the table been initialised
-static bool initialised = false;
-
-/* ----
- rtemsInterrupt
-*/
-
-#include <cstdlib>
-
-rtemsInterrupt::rtemsInterrupt()
- : vector(0),
- caught(false),
- old_handler(0),
- old_interrupt(0)
-{
- if (!initialised)
- {
- interrupt_table = (rtemsInterrupt **)
- malloc(sizeof(rtemsInterrupt *) * CPU_INTERRUPT_NUMBER_OF_VECTORS);
- for (rtems_vector_number vec = 0;
- vec < CPU_INTERRUPT_NUMBER_OF_VECTORS;
- vec++)
- {
- interrupt_table[vec] = 0;
- }
- initialised = true;
- }
-}
-
-rtemsInterrupt::~rtemsInterrupt()
-{
- release();
-}
-
-const rtems_status_code rtemsInterrupt::isr_catch(const rtems_vector_number vec)
-{
- if (vec >= CPU_INTERRUPT_NUMBER_OF_VECTORS)
- return set_status_code(RTEMS_INVALID_NUMBER);
-
- if (caught)
- return set_status_code(RTEMS_RESOURCE_IN_USE);
-
- old_interrupt = interrupt_table[vec];
- interrupt_table[vec] = this;
- vector = vec;
-
-#if (CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE)
- set_status_code(rtems_interrupt_catch(redirector,
- vector,
- &old_handler));
-#else
- set_status_code(RTEMS_NOT_DEFINED);
-#endif
- if (successful())
- caught = true;
- else
- {
- interrupt_table[vector] = old_interrupt;
- old_interrupt = 0;
- old_handler = 0;
- vector = 0;
- }
-
- return last_status_code();
-}
-
-const rtems_status_code rtemsInterrupt::release(void)
-{
- if (caught)
- {
-#if (CPU_SIMPLE_VECTORED_INTERRUPTS == TRUE)
- set_status_code(rtems_interrupt_catch(old_handler,
- vector,
- &old_handler));
-#else
- set_status_code(RTEMS_NOT_DEFINED);
-#endif
- interrupt_table[vector] = old_interrupt;
- old_interrupt = 0;
- old_handler = 0;
- vector = 0;
- caught = false;
- }
- else
- set_status_code(RTEMS_SUCCESSFUL);
-
- return last_status_code();
-}
-
-void rtemsInterrupt::redirector(rtems_vector_number vector)
-{
- if (interrupt_table[vector])
- interrupt_table[vector]->handler();
-}
-#endif