18,11 → 18,11 |
|
/** |
------------ |
CVS : $Id: time.c,v 1.2 2003-01-07 17:07:49 pj Exp $ |
CVS : $Id: time.c,v 1.3 2003-11-05 15:05:12 giacomo Exp $ |
|
File: $File$ |
Revision: $Revision: 1.2 $ |
Last update: $Date: 2003-01-07 17:07:49 $ |
Revision: $Revision: 1.3 $ |
Last update: $Date: 2003-11-05 15:05:12 $ |
------------ |
|
This file contains the functions defined in time.h |
142,15 → 142,17 |
|
int timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid) |
{ |
SYS_FLAGS f; |
|
if (clock_id != CLOCK_REALTIME) { |
errno = EINVAL; |
return -1; |
} |
|
kern_cli(); |
f = kern_fsave(); |
|
if (timerqueue_free == -1 || sigqueue_free == -1) { |
kern_sti(); |
kern_frestore(f); |
errno = EAGAIN; |
return -1; |
} |
184,7 → 186,7 |
|
timer_table[*timerid].overrun = 0; |
|
kern_sti(); |
kern_frestore(f); |
return 0; |
} |
|
195,15 → 197,17 |
|
int timer_delete(timer_t timerid) |
{ |
SYS_FLAGS f; |
|
if (timerid < 0 || timerid >= TIMER_MAX) { |
errno = EINVAL; |
return -1; |
} |
|
kern_cli(); |
f = kern_fsave(); |
|
if (!timer_table[timerid].used) { |
kern_sti(); |
kern_frestore(f); |
errno = EINVAL; |
return -1; |
} |
228,7 → 232,7 |
~(USED_FOR_TIMER | SIGNAL_POSTED); |
} |
|
kern_sti(); |
kern_frestore(f); |
return 0; |
} |
|
322,6 → 326,7 |
{ |
struct timespec ct; /* current time */ |
int ct_read = 0; /* we take the current time only once */ |
SYS_FLAGS f; |
|
if (timerid < 0 || timerid >= TIMER_MAX || !value) { |
errno = EINVAL; |
340,10 → 345,10 |
return -1; |
} |
|
kern_cli(); |
f = kern_fsave(); |
|
if (!timer_table[timerid].used) { |
kern_sti(); |
kern_frestore(f); |
errno = EINVAL; |
return -1; |
} |
389,7 → 394,7 |
timer_table[timerid].current.tv_nsec/1000); */ |
} |
|
kern_sti(); |
kern_frestore(f); |
return 0; |
} |
|
396,6 → 401,7 |
int timer_gettime(timer_t timerid, struct itimerspec *value) |
{ |
struct timespec ct; /* current time */ |
SYS_FLAGS f; |
|
if (timerid < 0 || timerid >= TIMER_MAX) { |
errno = EINVAL; |
402,10 → 408,10 |
return -1; |
} |
|
kern_cli(); |
f = kern_fsave(); |
|
if (!timer_table[timerid].used) { |
kern_sti(); |
kern_frestore(f); |
errno = EINVAL; |
return -1; |
} |
421,7 → 427,7 |
/* and return the reactivation period */ |
TIMESPEC_ASSIGN(&value->it_interval, &timer_table[timerid].period); |
|
kern_sti(); |
kern_frestore(f); |
return 0; |
} |
|
428,6 → 434,7 |
int timer_getoverrun(timer_t timerid) |
{ |
int returnvalue; |
SYS_FLAGS f; |
|
if (timerid < 0 || timerid >= TIMER_MAX) { |
errno = EINVAL; |
434,16 → 441,16 |
return -1; |
} |
|
kern_cli(); |
f = kern_fsave(); |
|
if (!timer_table[timerid].used) { |
kern_sti(); |
kern_frestore(f); |
errno = EINVAL; |
return -1; |
} |
|
returnvalue = timer_table[timerid].overrun; |
kern_sti(); |
kern_frestore(f); |
return returnvalue; |
} |
|