comparison 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
comparison
equal deleted inserted replaced
176:3902ef905c9c 177:4c750ce71ae3
92 #define cyg_drv_interrupt_mask cyg_interrupt_mask 92 #define cyg_drv_interrupt_mask cyg_interrupt_mask
93 #define cyg_drv_interrupt_unmask cyg_interrupt_unmask 93 #define cyg_drv_interrupt_unmask cyg_interrupt_unmask
94 #define cyg_drv_interrupt_acknowledge cyg_interrupt_acknowledge 94 #define cyg_drv_interrupt_acknowledge cyg_interrupt_acknowledge
95 #define cyg_drv_interrupt_configure cyg_interrupt_configure 95 #define cyg_drv_interrupt_configure cyg_interrupt_configure
96 #define cyg_drv_interrupt_level cyg_interrupt_level 96 #define cyg_drv_interrupt_level cyg_interrupt_level
97 #define cyg_drv_interrupt_set_cpu cyg_interrupt_set_cpu
98 #define cyg_drv_interrupt_get_cpu cyg_interrupt_get_cpu
99
100 #define cyg_drv_spinlock_t cyg_spinlock_t
101 #define cyg_drv_spinlock_init cyg_spinlock_init
102 #define cyg_drv_spinlock_spin cyg_spinlock_spin
103 #define cyg_drv_spinlock_clear cyg_spinlock_clear
104 #define cyg_drv_spinlock_try cyg_spinlock_try
105 #define cyg_drv_spinlock_test cyg_spinlock_test
106 #define cyg_drv_spinlock_spin_intsave cyg_spinlock_spin_intsave
107 #define cyg_drv_spinlock_clear_intsave cyg_spinlock_clear_intsave
97 108
98 #else /* CYGPKG_KERNEL */ 109 #else /* CYGPKG_KERNEL */
99 110
100 /*------------------------------------------------------------------------*/ 111 /*------------------------------------------------------------------------*/
101 /* Non-kernel version of API */ 112 /* Non-kernel version of API */
102 113
103 typedef CYG_ADDRWORD cyg_addrword_t; /* May hold pointer or word */ 114 typedef CYG_ADDRWORD cyg_addrword_t; /* May hold pointer or word */
104 typedef cyg_addrword_t cyg_handle_t; /* Object handle */ 115 typedef cyg_addrword_t cyg_handle_t; /* Object handle */
105 typedef cyg_uint32 cyg_priority_t; /* type for priorities */ 116 typedef cyg_uint32 cyg_priority_t; /* type for priorities */
106 typedef cyg_uint32 cyg_vector_t; /* Interrupt vector id */ 117 typedef cyg_uint32 cyg_vector_t; /* Interrupt vector id */
107 typedef int cyg_bool_t; 118 typedef cyg_uint32 cyg_cpu_t; /* CPU id */
108 typedef cyg_int32 cyg_code_t; /* type for various codes */ 119 typedef int cyg_bool_t;
120 typedef cyg_int32 cyg_code_t; /* type for various codes */
109 121
110 typedef cyg_uint32 cyg_ISR_t( cyg_vector_t vector, cyg_addrword_t data); 122 typedef cyg_uint32 cyg_ISR_t( cyg_vector_t vector, cyg_addrword_t data);
111 typedef void cyg_DSR_t(cyg_vector_t vector, 123 typedef void cyg_DSR_t(cyg_vector_t vector,
112 cyg_ucount32 count, 124 cyg_ucount32 count,
113 cyg_addrword_t data); 125 cyg_addrword_t data);
180 cyg_vector_t vector, 192 cyg_vector_t vector,
181 cyg_bool_t level, 193 cyg_bool_t level,
182 cyg_bool_t up 194 cyg_bool_t up
183 ); 195 );
184 externC void cyg_drv_interrupt_level( cyg_vector_t vector, cyg_priority_t level ); 196 externC void cyg_drv_interrupt_level( cyg_vector_t vector, cyg_priority_t level );
197 externC void cyg_drv_interrupt_set_cpu( cyg_vector_t vector, cyg_cpu_t cpu );
198 externC cyg_cpu_t cyg_drv_interrupt_get_cpu( cyg_vector_t vector );
185 199
186 200
187 enum cyg_ISR_results 201 enum cyg_ISR_results
188 { 202 {
189 CYG_ISR_HANDLED = 1, /* Interrupt was handled */ 203 CYG_ISR_HANDLED = 1, /* Interrupt was handled */
190 CYG_ISR_CALL_DSR = 2 /* Schedule DSR */ 204 CYG_ISR_CALL_DSR = 2 /* Schedule DSR */
191 }; 205 };
192 206
207
208 typedef struct
209 {
210 cyg_atomic lock;
211 } cyg_drv_spinlock_t;
212
213 void cyg_drv_spinlock_init(
214 cyg_drv_spinlock_t *lock, /* spinlock to initialize */
215 cyg_bool_t locked /* init locked or unlocked */
216 );
217
218 void cyg_drv_spinlock_destroy( cyg_drv_spinlock_t *lock );
219
220 void cyg_drv_spinlock_spin( cyg_drv_spinlock_t *lock );
221
222 void cyg_drv_spinlock_clear( cyg_drv_spinlock_t *lock );
223
224 cyg_bool_t cyg_drv_spinlock_try( cyg_drv_spinlock_t *lock );
225
226 cyg_bool_t cyg_drv_spinlock_test( cyg_drv_spinlock_t *lock );
227
228 void cyg_drv_spinlock_spin_intsave( cyg_drv_spinlock_t *lock,
229 cyg_addrword_t *istate );
230
231 void cyg_drv_spinlock_clear_intsave( cyg_drv_spinlock_t *lock,
232 cyg_addrword_t istate );
233
193 #endif /* CYGPKG_KERNEL */ 234 #endif /* CYGPKG_KERNEL */
194 235
195 /*------------------------------------------------------------------------*/ 236 /*------------------------------------------------------------------------*/
196 /* EOF drv_api.h */ 237 /* EOF drv_api.h */
197 #endif // CYGONCE_HAL_DRV_API_H 238 #endif // CYGONCE_HAL_DRV_API_H