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
__asm__("\.text\.globl _atomic_inc\ _atomic_inc:\ stc ccr, r1h ; save flags\ orc #0x80, ccr ; disable all but NMI\ mov.b @r0, r1l\ inc r1l\ mov.b r1l, @r0\ ldc r1h, ccr ; restore flags\ rts\")
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.
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)