STATUS: 94% done

0000 T _gtime		compatible
    000e T _ftime		compatible
    00a4 T _stime		compatible
    00d2 T _setuid		compatible
    012e T _getuid		compatible
    0148 T _setgid		compatible
    019a T _getgid		compatible
    01b4 T _getpid		compatible
    01d0 T _setpgrp		compatible
    0206 T _sync		compatible
    020e T _nice		compatible
    027c T _unlink		compatible
    038e T _chdir		compatible
    0398 T _chroot		compatible
    03ac T _chdirec		compatible
    042a T _chmod		compatible
    04a0 T _chown		compatible
    04fa T _ssig		compatible
    0612 T _kill		compatible
    0722 T _times		compatible
    077a T _profil		compatible
    07ac T _sprofil		not existent
    0872 T _alarm		compatible
    08aa T _pause		compatible
    08bc T _umask		compatible
    08e0 T _utime		compatible
    09ee T _nosys		compatible
    09f8 T _nullsys		compatible
    09fa T _bpt			compatible
    0a0a T _utssys		not compatible
    0b0a T _ulimit		compatible
This commit is contained in:
Oliver Lehmann 2008-05-21 19:44:23 +00:00
parent aae7e621be
commit 94d5eb023f
1 changed files with 25 additions and 9 deletions

View File

@ -33,6 +33,7 @@ char sys4wstr[] = "@[$]sys4.c Rev : 4.2 09/26/83 22:15:02";
#include <sys/filsys.h> #include <sys/filsys.h>
#include <sys/mount.h> #include <sys/mount.h>
/* /*
* Everything in this file is a routine implementing a system call. * Everything in this file is a routine implementing a system call.
*/ */
@ -329,21 +330,28 @@ ssig()
register struct proc *p; register struct proc *p;
struct a { struct a {
int signo; int signo;
int fun; long fun;
} *uap; } *uap;
extern int Nproc;
uap = (struct a *)u.u_ap; uap = (struct a *)u.u_ap;
a = uap->signo; a = uap->signo;
if (a <= 0 || a > NSIG || a == SIGKILL) { if (a <= 0 || a >= NSIG || a == SIGKILL) {
u.u_error = EINVAL; u.u_error = EINVAL;
return; return;
} }
u.u_r.r_val1 = u.u_signal[a-1]; if(!u.u_segmented) {
u.u_r.r_val1 = u.u_signal[a-1];
} else {
u.u_r.r_val1 = u.u_signal[a-1]>> 16;
u.u_r.r_val2 = u.u_signal[a-1];
}
u.u_signal[a-1] = uap->fun; u.u_signal[a-1] = uap->fun;
u.u_procp->p_sig &= ~(1L<<(a-1)); u.u_procp->p_sig &= ~(1L<<(a-1));
if (a == SIGCLD) { if (a == SIGCLD) {
a = u.u_procp->p_pid; a = u.u_procp->p_pid;
for (p = &proc[1]; p < &proc[NPROC] ; p++) { for (p = &proc[1]; p < &proc[Nproc] ; p++) {
if (a == p->p_ppid && p->p_stat == SZOMB) if (a == p->p_ppid && p->p_stat == SZOMB)
psignal(u.u_procp, SIGCLD); psignal(u.u_procp, SIGCLD);
} }
@ -358,7 +366,8 @@ kill()
int pid; int pid;
int signo; int signo;
} *uap; } *uap;
int f; register int f;
extern int Nproc;
uap = (struct a *)u.u_ap; uap = (struct a *)u.u_ap;
if (uap->signo < 0 || uap->signo > NSIG) { if (uap->signo < 0 || uap->signo > NSIG) {
@ -376,7 +385,7 @@ kill()
u.u_error = ESRCH; u.u_error = ESRCH;
return; return;
} }
for(; p < &proc[NPROC]; p++) { for(; p < &proc[Nproc]; p++) {
if (p->p_stat == NULL) if (p->p_stat == NULL)
continue; continue;
if (arg > 0 && p->p_pid != arg) if (arg > 0 && p->p_pid != arg)
@ -406,12 +415,14 @@ times()
register struct a { register struct a {
time_t (*times)[4]; time_t (*times)[4];
} *uap; } *uap;
register fcw;
uap = (struct a *)u.u_ap; uap = (struct a *)u.u_ap;
if (copyout((caddr_t)&u.u_utime, (caddr_t)uap->times, sizeof(*uap->times))) if (copyout((caddr_t)&u.u_utime, (caddr_t)uap->times, sizeof(*uap->times))<0)
u.u_error = EFAULT; u.u_error = EFAULT;
dvi(); fcw = dvi();
u.u_r.r_time = lbolt; u.u_r.r_time = lifetime;
evi(fcw);
} }
profil() profil()
@ -531,6 +542,11 @@ nullsys()
{ {
} }
bpt()
{
psignal(u.u_procp, SIGTRAP);
}
utssys() utssys()
{ {
register i; register i;