ape: remove getitimer setitimer implemenations
This commit is contained in:
parent
ac891003ea
commit
ede15f38e5
2 changed files with 0 additions and 87 deletions
|
@ -1,86 +0,0 @@
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <sys/wait.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
typedef struct Timer Timer;
|
|
||||||
struct Timer {
|
|
||||||
int pid, signal;
|
|
||||||
struct itimerval itimer;
|
|
||||||
};
|
|
||||||
|
|
||||||
Timer timers[3] = {
|
|
||||||
{0, SIGALRM},
|
|
||||||
{0, SIGVTALRM},
|
|
||||||
{0, SIGPROF},
|
|
||||||
};
|
|
||||||
|
|
||||||
void
|
|
||||||
timerloop(int signal, const struct timeval tval)
|
|
||||||
{
|
|
||||||
pid_t ppid;
|
|
||||||
struct timespec t, s;
|
|
||||||
|
|
||||||
ppid = getppid();
|
|
||||||
t.tv_sec = tval.tv_sec;
|
|
||||||
t.tv_nsec = tval.tv_usec*1000;
|
|
||||||
for(;;){
|
|
||||||
nanosleep(&t, &s);
|
|
||||||
kill(ppid, signal);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
setitimer(int which, const struct itimerval *new, struct itimerval *curr)
|
|
||||||
{
|
|
||||||
pid_t pid;
|
|
||||||
int status;
|
|
||||||
Timer *timer;
|
|
||||||
|
|
||||||
if(which < 0 || which >= 3){
|
|
||||||
errno = EINVAL;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
timer = timers+which;
|
|
||||||
if(timer->pid != 0){
|
|
||||||
kill(timer->pid, SIGKILL);
|
|
||||||
waitpid(timer->pid, &status, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
switch(pid = fork()){
|
|
||||||
default:
|
|
||||||
timer->pid = pid;
|
|
||||||
if(curr != NULL)
|
|
||||||
*curr = timer->itimer;
|
|
||||||
timer->itimer = *new;
|
|
||||||
break;
|
|
||||||
case -1:
|
|
||||||
errno = EFAULT;
|
|
||||||
return -1;
|
|
||||||
case 0:
|
|
||||||
timerloop(timer->signal, new->it_interval);
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
getitimer(int which, struct itimerval *curr)
|
|
||||||
{
|
|
||||||
Timer *timer;
|
|
||||||
|
|
||||||
if(which < 0 || which >= 3){
|
|
||||||
errno = EINVAL;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
timer = timers+which;
|
|
||||||
*curr = timer->itimer;
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -15,7 +15,6 @@ OFILES=\
|
||||||
gethostbyaddr.$O\
|
gethostbyaddr.$O\
|
||||||
gethostbyname.$O\
|
gethostbyname.$O\
|
||||||
gethostname.$O\
|
gethostname.$O\
|
||||||
getitimer.$O\
|
|
||||||
getnameinfo.$O\
|
getnameinfo.$O\
|
||||||
getopt.$O\
|
getopt.$O\
|
||||||
getpeername.$O\
|
getpeername.$O\
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue