summaryrefslogtreecommitdiffstats
path: root/cpukit/libgnat/ada_intrsupp.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2007-12-12 00:15:54 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2007-12-12 00:15:54 +0000
commitdb27544606497dbd7a87ad03857c17536cf38883 (patch)
treea228b5e37522159696e20863bd4ef2d5cbdcd6a0 /cpukit/libgnat/ada_intrsupp.c
parent2007-12-11 Joel Sherrill <joel.sherrill@OARcorp.com> (diff)
downloadrtems-db27544606497dbd7a87ad03857c17536cf38883.tar.bz2
2007-12-11 Joel Sherrill <joel.sherrill@oarcorp.com>
* Makefile.am, configure.ac, posix/Makefile.am, wrapup/Makefile.am: Move Ada support code that is untestable from the Standard RTEMS Test Suite into its own directory. All code in score, posix, rtems, and sapi should be testable by the Standard RTEMS Test Suites. It was buried under POSIX before so this should be a clearer location anyway. * libgnat/.cvsignore, libgnat/Makefile.am, libgnat/ada_intrsupp.c, libgnat/adasupp.c: New files. * posix/src/ada_intrsupp.c, posix/src/adasupp.c: Removed.
Diffstat (limited to 'cpukit/libgnat/ada_intrsupp.c')
-rw-r--r--cpukit/libgnat/ada_intrsupp.c131
1 files changed, 131 insertions, 0 deletions
diff --git a/cpukit/libgnat/ada_intrsupp.c b/cpukit/libgnat/ada_intrsupp.c
new file mode 100644
index 0000000000..9bec384127
--- /dev/null
+++ b/cpukit/libgnat/ada_intrsupp.c
@@ -0,0 +1,131 @@
+#include <rtems.h>
+#include <rtems/bspIo.h>
+
+rtems_id __gnat_binary_semaphore_create(void)
+{
+ rtems_status_code status;
+ rtems_id semaphore;
+
+ status = rtems_semaphore_create(
+ rtems_build_name( 'A', 'I', 'S', 'R' ),
+ 0,
+ RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_FIFO,
+ 0,
+ &semaphore
+ );
+ if ( status != RTEMS_SUCCESSFUL )
+ printk( "__gnat_binary_semaphore_create failed %d\n", status );
+
+ #if defined(GNAT_DEBUG)
+ printk( "__gnat_binary_semaphore_create\n" );
+ #endif
+ return semaphore;
+}
+
+int __gnat_binary_semaphore_delete(
+ rtems_id semaphore
+)
+{
+ rtems_status_code status;
+
+ #if defined(GNAT_DEBUG)
+ printk( "__gnat_binary_semaphore_delete\n" );
+ #endif
+
+ status = rtems_semaphore_delete( semaphore );
+ if ( status != RTEMS_SUCCESSFUL )
+ printk( "__gnat_binary_semaphore_delete failed %d\n", status );
+
+ return 0;
+}
+
+int __gnat_binary_semaphore_obtain(
+ rtems_id semaphore
+)
+{
+ rtems_status_code status;
+
+ #if defined(GNAT_DEBUG)
+ printk( "__gnat_binary_semaphore_obtain\n" );
+ #endif
+
+ status = rtems_semaphore_obtain( semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
+ if ( status != RTEMS_SUCCESSFUL )
+ printk( "__gnat_binary_semaphore_obtain failed %d\n", status );
+
+ return 0;
+}
+
+int __gnat_binary_semaphore_release(
+ rtems_id semaphore
+)
+{
+ rtems_status_code status;
+
+ #if defined(GNAT_DEBUG)
+ printk( "__gnat_binary_semaphore_release\n" );
+ #endif
+
+ status = rtems_semaphore_release( semaphore );
+ if ( status != RTEMS_SUCCESSFUL )
+ printk( "__gnat_binary_semaphore_release failed %d\n", status );
+
+ return 0;
+}
+
+int __gnat_binary_semaphore_flush(
+ rtems_id semaphore
+)
+{
+ rtems_status_code status;
+
+ printk( "__gnat_binary_semaphore_flush\n" );
+
+ status = rtems_semaphore_flush( semaphore );
+ if ( status != RTEMS_SUCCESSFUL )
+ printk( "__gnat_binary_semaphore_flush failed %d\n", status );
+
+ return 0;
+}
+
+typedef void (*ISRHandler)(void*);
+ void *set_vector( void *, rtems_vector_number, int );
+
+int __gnat_interrupt_connect(
+ int vector,
+ ISRHandler handler,
+ void *parameter
+)
+{
+ printk( "__gnat_interrupt_connect( %d, %p, %p )\n", vector, handler, parameter );
+ set_vector( handler, vector, 1 );
+ return 0;
+}
+
+int __gnat_interrupt_set(
+ int vector,
+ ISRHandler handler
+)
+{
+ printk( "__gnat_interrupt_set( %d, %p )\n", vector, handler );
+
+ set_vector( handler, vector, 1 );
+ return 0;
+}
+
+ISRHandler __gnat_interrupt_get(
+ int vector
+)
+{
+ printk( "__gnat_interrupt_get( %d )\n", vector );
+ return 0;
+}
+
+int __gnat_interrupt_number_to_vector(
+ int intNum
+)
+{
+ printk( "__gnat_interrupt_number_to_vector( %d )\n", intNum );
+ return intNum;
+}
+