28 #ifdef CONF_SEMAPHORES
67 if (
wait_event(sem_event_wait,(
unsigned long) ((
unsigned)sem)) == 0)
79 timeout_sem_data_t *tsem = (timeout_sem_data_t*) ((
unsigned)data);
97 const time_t abs_timeout) {
98 timeout_sem_data_t data;
100 data.abs_timeout = abs_timeout;
104 (
wakeup_t) ((
unsigned) &data)) != 1) {
123 #ifndef DOXYGEN_SHOULD_SKIP_THIS
127 .globl _sem_trywait\n\
129 stc ccr,r1h ; save flags \n\
130 orc #0x80,ccr ; block all but NMI\n\
132 beq sem_fail ; !=0 -> decrease, return 0\n\
135 sub.w r0,r0 ; return 0\n\
139 mov #0xffff,r0 ; else return 0xffff\n\
142 ldc r1h,ccr ; restore flags\n\
145 #endif // DOXYGEN_SHOULD_SKIP_THIS
147 #endif // CONF_SEMAPHORES
int sem_wait(sem_t *sem)
Wait for semaphore (blocking)
time_t get_system_up_time(void)
retrieve the current system time
atomic_t sem_t
the semaphore data-type
Interface: reduced UNIX standard library.
int sem_timedwait(sem_t *sem, const time_t abs_timeout)
Wait for semaphore (blocking with timeout).
unsigned long wakeup_t
wakeup data area type
Interface: POSIX 1003.1b semaphores for task synchronization.
__asm__("\n\
.text\n\
.globl _atomic_inc\n\
_atomic_inc:\n\
stc ccr, r1h ; save flags\n\
orc #0x80, ccr ; disable all but NMI\n\
mov.b @r0, r1l\n\
inc r1l\n\
mov.b r1l, @r0\n\
ldc r1h, ccr ; restore flags\n\
rts\n\
")
unsigned long time_t
time type
int sem_trywait(sem_t *sem)
Try a wait for semaphore (non-blocking)
wakeup_t wait_event(wakeup_t(*wakeup)(wakeup_t), wakeup_t data)