diff packages/hal/common/current/include/drv_api.h @ 177:4c750ce71ae3

Merge from eCos master repository on 2001-08-10-19:22:57-BST
author jlarmour
date Fri, 10 Aug 2001 19:27:55 +0000
parents eb9fd8c04db3
children e0c0827131d1
line wrap: on
line diff
--- a/packages/hal/common/current/include/drv_api.h
+++ b/packages/hal/common/current/include/drv_api.h
@@ -94,6 +94,17 @@
 #define cyg_drv_interrupt_acknowledge  cyg_interrupt_acknowledge
 #define cyg_drv_interrupt_configure    cyg_interrupt_configure
 #define cyg_drv_interrupt_level        cyg_interrupt_level
+#define cyg_drv_interrupt_set_cpu      cyg_interrupt_set_cpu
+#define cyg_drv_interrupt_get_cpu      cyg_interrupt_get_cpu
+
+#define cyg_drv_spinlock_t             cyg_spinlock_t
+#define cyg_drv_spinlock_init          cyg_spinlock_init
+#define cyg_drv_spinlock_spin          cyg_spinlock_spin
+#define cyg_drv_spinlock_clear         cyg_spinlock_clear
+#define cyg_drv_spinlock_try           cyg_spinlock_try
+#define cyg_drv_spinlock_test          cyg_spinlock_test
+#define cyg_drv_spinlock_spin_intsave  cyg_spinlock_spin_intsave
+#define cyg_drv_spinlock_clear_intsave cyg_spinlock_clear_intsave
 
 #else /* CYGPKG_KERNEL */
 
@@ -104,8 +115,9 @@ typedef CYG_ADDRWORD cyg_addrword_t;    
 typedef cyg_addrword_t cyg_handle_t;        /* Object handle              */
 typedef cyg_uint32   cyg_priority_t;        /* type for priorities        */
 typedef cyg_uint32   cyg_vector_t;          /* Interrupt vector id        */
-typedef int cyg_bool_t;
-typedef cyg_int32      cyg_code_t;          /* type for various codes        */       
+typedef cyg_uint32   cyg_cpu_t;             /* CPU id                     */
+typedef int          cyg_bool_t;
+typedef cyg_int32    cyg_code_t;            /* type for various codes        */       
 
 typedef cyg_uint32 cyg_ISR_t( cyg_vector_t vector, cyg_addrword_t data);
 typedef void cyg_DSR_t(cyg_vector_t vector,
@@ -182,6 +194,8 @@ externC void cyg_drv_interrupt_configure
                      cyg_bool_t          up
                      );
 externC void cyg_drv_interrupt_level( cyg_vector_t vector, cyg_priority_t level );
+externC void cyg_drv_interrupt_set_cpu( cyg_vector_t vector, cyg_cpu_t cpu );
+externC cyg_cpu_t cyg_drv_interrupt_get_cpu( cyg_vector_t vector );
 
 
 enum cyg_ISR_results
@@ -190,6 +204,33 @@ enum cyg_ISR_results
     CYG_ISR_CALL_DSR = 2                /* Schedule DSR                      */
 };
 
+
+typedef struct
+{
+    cyg_atomic          lock;
+} cyg_drv_spinlock_t;
+
+void cyg_drv_spinlock_init(
+    cyg_drv_spinlock_t  *lock,          /* spinlock to initialize            */
+    cyg_bool_t          locked          /* init locked or unlocked           */
+);
+
+void cyg_drv_spinlock_destroy( cyg_drv_spinlock_t *lock );
+
+void cyg_drv_spinlock_spin( cyg_drv_spinlock_t *lock );
+
+void cyg_drv_spinlock_clear( cyg_drv_spinlock_t *lock );
+
+cyg_bool_t cyg_drv_spinlock_try( cyg_drv_spinlock_t *lock );
+
+cyg_bool_t cyg_drv_spinlock_test( cyg_drv_spinlock_t *lock );
+
+void cyg_drv_spinlock_spin_intsave( cyg_drv_spinlock_t *lock,
+                                    cyg_addrword_t *istate );
+
+void cyg_drv_spinlock_clear_intsave( cyg_drv_spinlock_t *lock,
+                                     cyg_addrword_t istate );
+
 #endif /* CYGPKG_KERNEL */
 
 /*------------------------------------------------------------------------*/