Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 317 → Rev 318

/shark/trunk/kernel/time.c
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;
}