PM: remove obsolete ALARM, PAUSE, TIMES calls
NetBSD libc implements these as wrappers around setitimer(2), sigsuspend(2), and getrusage(2), respectively. Change-Id: I0c5e725b3e1316bddd3a3ff7ef65d57d30afd10d
This commit is contained in:
parent
f30a16b159
commit
4d4e70daaa
20 changed files with 38 additions and 289 deletions
|
@ -193,7 +193,6 @@ static char *prrecv(struct pstat *ps)
|
||||||
blkstr = "?";
|
blkstr = "?";
|
||||||
if (ps->ps_recv == PM_PROC_NR) {
|
if (ps->ps_recv == PM_PROC_NR) {
|
||||||
switch (ps->ps_pstate) {
|
switch (ps->ps_pstate) {
|
||||||
case PSTATE_PAUSED: blkstr = "pause"; break;
|
|
||||||
case PSTATE_WAITING: blkstr = "wait"; break;
|
case PSTATE_WAITING: blkstr = "wait"; break;
|
||||||
case PSTATE_SIGSUSP: blkstr = "sigsusp"; break;
|
case PSTATE_SIGSUSP: blkstr = "sigsusp"; break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2323,7 +2323,7 @@
|
||||||
./usr/man/man2/accept.2 minix-sys
|
./usr/man/man2/accept.2 minix-sys
|
||||||
./usr/man/man2/access.2 minix-sys
|
./usr/man/man2/access.2 minix-sys
|
||||||
./usr/man/man2/adjtime.2 minix-sys
|
./usr/man/man2/adjtime.2 minix-sys
|
||||||
./usr/man/man2/alarm.2 minix-sys
|
./usr/man/man2/alarm.2 minix-sys obsolete
|
||||||
./usr/man/man2/bind.2 minix-sys
|
./usr/man/man2/bind.2 minix-sys
|
||||||
./usr/man/man2/brk.2 minix-sys
|
./usr/man/man2/brk.2 minix-sys
|
||||||
./usr/man/man2/chdir.2 minix-sys
|
./usr/man/man2/chdir.2 minix-sys
|
||||||
|
@ -2369,7 +2369,7 @@
|
||||||
./usr/man/man2/mknod.2 minix-sys
|
./usr/man/man2/mknod.2 minix-sys
|
||||||
./usr/man/man2/mount.2 minix-sys
|
./usr/man/man2/mount.2 minix-sys
|
||||||
./usr/man/man2/open.2 minix-sys
|
./usr/man/man2/open.2 minix-sys
|
||||||
./usr/man/man2/pause.2 minix-sys
|
./usr/man/man2/pause.2 minix-sys obsolete
|
||||||
./usr/man/man2/pipe.2 minix-sys
|
./usr/man/man2/pipe.2 minix-sys
|
||||||
./usr/man/man2/pipe2.2 minix-sys
|
./usr/man/man2/pipe2.2 minix-sys
|
||||||
./usr/man/man2/ptrace.2 minix-sys
|
./usr/man/man2/ptrace.2 minix-sys
|
||||||
|
@ -2403,7 +2403,7 @@
|
||||||
./usr/man/man2/symlink.2 minix-sys
|
./usr/man/man2/symlink.2 minix-sys
|
||||||
./usr/man/man2/sync.2 minix-sys
|
./usr/man/man2/sync.2 minix-sys
|
||||||
./usr/man/man2/time.2 minix-sys
|
./usr/man/man2/time.2 minix-sys
|
||||||
./usr/man/man2/times.2 minix-sys
|
./usr/man/man2/times.2 minix-sys obsolete
|
||||||
./usr/man/man2/truncate.2 minix-sys
|
./usr/man/man2/truncate.2 minix-sys
|
||||||
./usr/man/man2/umask.2 minix-sys
|
./usr/man/man2/umask.2 minix-sys
|
||||||
./usr/man/man2/uname.2 minix-sys
|
./usr/man/man2/uname.2 minix-sys
|
||||||
|
|
|
@ -24,8 +24,6 @@
|
||||||
#define GETUID 24
|
#define GETUID 24
|
||||||
#define STIME 25
|
#define STIME 25
|
||||||
#define PTRACE 26
|
#define PTRACE 26
|
||||||
#define ALARM 27
|
|
||||||
#define PAUSE 29
|
|
||||||
#define UTIME 30
|
#define UTIME 30
|
||||||
#define GETEPINFO 31
|
#define GETEPINFO 31
|
||||||
#define SETGROUPS 32
|
#define SETGROUPS 32
|
||||||
|
@ -37,7 +35,6 @@
|
||||||
#define MKDIR 39
|
#define MKDIR 39
|
||||||
#define RMDIR 40
|
#define RMDIR 40
|
||||||
#define PIPE 42
|
#define PIPE 42
|
||||||
#define TIMES 43
|
|
||||||
#define SYMLINK 45
|
#define SYMLINK 45
|
||||||
#define SETGID 46
|
#define SETGID 46
|
||||||
#define GETGID 47
|
#define GETGID 47
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
|
|
||||||
/* PM sleep states. */
|
/* PM sleep states. */
|
||||||
#define PSTATE_NONE '-'
|
#define PSTATE_NONE '-'
|
||||||
#define PSTATE_PAUSED 'P'
|
|
||||||
#define PSTATE_WAITING 'W'
|
#define PSTATE_WAITING 'W'
|
||||||
#define PSTATE_SIGSUSP 'S'
|
#define PSTATE_SIGSUSP 'S'
|
||||||
|
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
#include <sys/cdefs.h>
|
|
||||||
#include "namespace.h"
|
|
||||||
|
|
||||||
#include <lib.h>
|
|
||||||
#include <sys/times.h>
|
|
||||||
|
|
||||||
#ifdef __weak_alias
|
|
||||||
__weak_alias(times, _times)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
clock_t times(struct tms *buf)
|
|
||||||
{
|
|
||||||
message m;
|
|
||||||
|
|
||||||
m.m4_l5 = 0; /* return this if system is pre-1.6 */
|
|
||||||
if (_syscall(PM_PROC_NR, TIMES, &m) < 0) return( (clock_t) -1);
|
|
||||||
buf->tms_utime = m.m4_l1;
|
|
||||||
buf->tms_stime = m.m4_l2;
|
|
||||||
buf->tms_cutime = m.m4_l3;
|
|
||||||
buf->tms_cstime = m.m4_l4;
|
|
||||||
return(m.m4_l5);
|
|
||||||
}
|
|
|
@ -90,3 +90,7 @@ times(struct tms *tp)
|
||||||
return ((clock_t)-1);
|
return ((clock_t)-1);
|
||||||
return ((clock_t)(CONVTCK(t)));
|
return ((clock_t)(CONVTCK(t)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(__minix) && defined(__weak_alias)
|
||||||
|
__weak_alias(times, _times)
|
||||||
|
#endif
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
MAN= accept.2 access.2 alarm.2 bind.2 brk.2 chdir.2 chmod.2 chown.2 \
|
MAN= accept.2 access.2 bind.2 brk.2 chdir.2 chmod.2 chown.2 \
|
||||||
chroot.2 close.2 connect.2 creat.2 dup.2 execve.2 exit.2 fcntl.2 \
|
chroot.2 close.2 connect.2 creat.2 dup.2 execve.2 exit.2 fcntl.2 \
|
||||||
fork.2 getgid.2 getitimer.2 getnucred.2 getpeereid.2 \
|
fork.2 getgid.2 getitimer.2 getnucred.2 getpeereid.2 \
|
||||||
getpeername.2 getpid.2 getpriority.2 getsockname.2 getsockopt.2 \
|
getpeername.2 getpid.2 getpriority.2 getsockname.2 getsockopt.2 \
|
||||||
gettimeofday.2 getuid.2 intro.2 ioctl.2 kill.2 link.2 listen.2 \
|
gettimeofday.2 getuid.2 intro.2 ioctl.2 kill.2 link.2 listen.2 \
|
||||||
lseek.2 mkdir.2 mknod.2 mount.2 open.2 pause.2 ptrace.2 \
|
lseek.2 mkdir.2 mknod.2 mount.2 open.2 ptrace.2 \
|
||||||
read.2 readlink.2 reboot.2 recv.2 recvfrom.2 recvmsg.2 rename.2 \
|
read.2 readlink.2 reboot.2 recv.2 recvfrom.2 recvmsg.2 rename.2 \
|
||||||
rmdir.2 select.2 send.2 sendmsg.2 sendto.2 setsid.2 \
|
rmdir.2 select.2 send.2 sendmsg.2 sendto.2 setsid.2 \
|
||||||
setsockopt.2 setuid.2 shutdown.2 sigaction.2 sigpending.2 \
|
setsockopt.2 setuid.2 shutdown.2 sigaction.2 sigpending.2 \
|
||||||
sigprocmask.2 sigsuspend.2 socket.2 socketpair.2 \
|
sigprocmask.2 sigsuspend.2 socket.2 socketpair.2 \
|
||||||
svrctl.2 symlink.2 sync.2 time.2 times.2 truncate.2 \
|
svrctl.2 symlink.2 sync.2 time.2 truncate.2 \
|
||||||
umask.2 uname.2 unlink.2 utime.2 wait.2 write.2
|
umask.2 uname.2 unlink.2 utime.2 wait.2 write.2
|
||||||
|
|
||||||
MLINKS += select.2 FD_CLR.2
|
MLINKS += select.2 FD_CLR.2
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
.\" Copyright (c) 1980 Regents of the University of California.
|
|
||||||
.\" All rights reserved. The Berkeley software License Agreement
|
|
||||||
.\" specifies the terms and conditions for redistribution.
|
|
||||||
.\"
|
|
||||||
.\" @(#)alarm.3c 6.3 (Berkeley) 5/27/86
|
|
||||||
.\"
|
|
||||||
.TH ALARM 2 "May 27, 1986"
|
|
||||||
.UC 4
|
|
||||||
.SH NAME
|
|
||||||
alarm \- schedule signal after specified time
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.nf
|
|
||||||
.ft B
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
unsigned int alarm(unsigned int \fIseconds\fP)
|
|
||||||
.ft R
|
|
||||||
.fi
|
|
||||||
.SH DESCRIPTION
|
|
||||||
.B Alarm
|
|
||||||
causes signal SIGALRM, see
|
|
||||||
.BR sigaction (2),
|
|
||||||
to be sent to the invoking process
|
|
||||||
in a number of seconds given by the argument.
|
|
||||||
Unless caught or ignored, the signal terminates the process.
|
|
||||||
.PP
|
|
||||||
Alarm requests are not stacked; successive calls reset the alarm clock.
|
|
||||||
If the argument is 0, any alarm request is canceled.
|
|
||||||
Because of scheduling delays,
|
|
||||||
resumption of execution of when the signal is
|
|
||||||
caught may be delayed an arbitrary amount.
|
|
||||||
.PP
|
|
||||||
The return value is the amount of time previously remaining in the alarm clock.
|
|
||||||
.SH "SEE ALSO"
|
|
||||||
.BR pause (2),
|
|
||||||
.BR sigsuspend (2),
|
|
||||||
.BR sigaction (2),
|
|
||||||
.BR sleep (3).
|
|
|
@ -1,43 +0,0 @@
|
||||||
.\" Copyright (c) 1980 Regents of the University of California.
|
|
||||||
.\" All rights reserved. The Berkeley software License Agreement
|
|
||||||
.\" specifies the terms and conditions for redistribution.
|
|
||||||
.\"
|
|
||||||
.\" @(#)pause.3c 6.1 (Berkeley) 5/9/85
|
|
||||||
.\"
|
|
||||||
.TH PAUSE 2 "May 9, 1985"
|
|
||||||
.UC 4
|
|
||||||
.SH NAME
|
|
||||||
pause \- stop until signal
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.nf
|
|
||||||
.ft B
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
int pause(void)
|
|
||||||
.ft R
|
|
||||||
.fi
|
|
||||||
.SH DESCRIPTION
|
|
||||||
.B Pause
|
|
||||||
never returns normally.
|
|
||||||
It is used to give up control while waiting for
|
|
||||||
a signal from
|
|
||||||
.BR kill (2)
|
|
||||||
or the alarm timer, see
|
|
||||||
.BR alarm (2).
|
|
||||||
Upon termination of a signal handler started during a
|
|
||||||
.B pause,
|
|
||||||
the
|
|
||||||
.B pause
|
|
||||||
call will return.
|
|
||||||
.SH "RETURN VALUE
|
|
||||||
Always returns \-1.
|
|
||||||
.SH ERRORS
|
|
||||||
.B Pause
|
|
||||||
always returns:
|
|
||||||
.TP 15
|
|
||||||
[EINTR]
|
|
||||||
The call was interrupted.
|
|
||||||
.SH "SEE ALSO
|
|
||||||
.BR alarm (2),
|
|
||||||
.BR kill (2),
|
|
||||||
.BR sigsuspend (2).
|
|
|
@ -1,73 +0,0 @@
|
||||||
.\" Copyright (c) 1980 Regents of the University of California.
|
|
||||||
.\" All rights reserved. The Berkeley software License Agreement
|
|
||||||
.\" specifies the terms and conditions for redistribution.
|
|
||||||
.\"
|
|
||||||
.\" @(#)times.3c 6.1 (Berkeley) 5/9/85
|
|
||||||
.\"
|
|
||||||
.TH TIMES 2 "May 9, 1985"
|
|
||||||
.UC 4
|
|
||||||
.SH NAME
|
|
||||||
times \- get process times
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.nf
|
|
||||||
.ft B
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/times.h>
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
int times(struct tms *\fIbuffer\fP)
|
|
||||||
.fi
|
|
||||||
.SH DESCRIPTION
|
|
||||||
.B Times
|
|
||||||
returns time-accounting information
|
|
||||||
for the current process
|
|
||||||
and for the terminated child processes
|
|
||||||
of the current process.
|
|
||||||
All times are in system clock ticks.
|
|
||||||
.PP
|
|
||||||
This is the structure returned by
|
|
||||||
.BR times :
|
|
||||||
.PP
|
|
||||||
.RS
|
|
||||||
.nf
|
|
||||||
.ta +0.4i +0.8i +1.2i
|
|
||||||
struct tms {
|
|
||||||
clock_t tms_utime; /* user time for this process */
|
|
||||||
clock_t tms_stime; /* system time for this process */
|
|
||||||
clock_t tms_cutime; /* children's user time */
|
|
||||||
clock_t tms_cstime; /* children's system time */
|
|
||||||
};
|
|
||||||
.fi
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
The user time is the number of clock ticks used by a process on
|
|
||||||
its own computations. The system time is the number of clock ticks
|
|
||||||
spent inside the kernel on behalf of a process. This does not
|
|
||||||
include time spent waiting for I/O to happen, only actual CPU
|
|
||||||
instruction times.
|
|
||||||
.PP
|
|
||||||
The children times are the sum
|
|
||||||
of the children's process times and
|
|
||||||
their children's times.
|
|
||||||
.SH RETURN
|
|
||||||
.B Times
|
|
||||||
returns the number of system clock ticks since boot time on success,
|
|
||||||
otherwise \-1 with the error code stored into the
|
|
||||||
global variable
|
|
||||||
.BR errno .
|
|
||||||
Since \-1 is also a valid return value upon success, one should clear
|
|
||||||
.B errno
|
|
||||||
before calling this function, and if \-1 is returned,
|
|
||||||
check its value again afterwards.
|
|
||||||
.SH ERRORS
|
|
||||||
The following error code may be set in
|
|
||||||
.BR errno :
|
|
||||||
.TP 15
|
|
||||||
[EFAULT]
|
|
||||||
The address specified by the
|
|
||||||
.I buffer
|
|
||||||
parameter is not in a valid part of the process address space.
|
|
||||||
.SH "SEE ALSO"
|
|
||||||
.BR time (1),
|
|
||||||
.BR wait (2),
|
|
||||||
.BR time (2).
|
|
|
@ -20,21 +20,20 @@ struct mproc mproc[NR_PROCS];
|
||||||
*===========================================================================*/
|
*===========================================================================*/
|
||||||
static char *flags_str(int flags)
|
static char *flags_str(int flags)
|
||||||
{
|
{
|
||||||
static char str[14];
|
static char str[13];
|
||||||
str[0] = (flags & WAITING) ? 'W' : '-';
|
str[0] = (flags & WAITING) ? 'W' : '-';
|
||||||
str[1] = (flags & ZOMBIE) ? 'Z' : '-';
|
str[1] = (flags & ZOMBIE) ? 'Z' : '-';
|
||||||
str[2] = (flags & PAUSED) ? 'P' : '-';
|
str[2] = (flags & ALARM_ON) ? 'A' : '-';
|
||||||
str[3] = (flags & ALARM_ON) ? 'A' : '-';
|
str[3] = (flags & EXITING) ? 'E' : '-';
|
||||||
str[4] = (flags & EXITING) ? 'E' : '-';
|
str[4] = (flags & STOPPED) ? 'S' : '-';
|
||||||
str[5] = (flags & STOPPED) ? 'S' : '-';
|
str[5] = (flags & SIGSUSPENDED) ? 'U' : '-';
|
||||||
str[6] = (flags & SIGSUSPENDED) ? 'U' : '-';
|
str[6] = (flags & REPLY) ? 'R' : '-';
|
||||||
str[7] = (flags & REPLY) ? 'R' : '-';
|
str[7] = (flags & VFS_CALL) ? 'F' : '-';
|
||||||
str[8] = (flags & VFS_CALL) ? 'F' : '-';
|
str[8] = (flags & PM_SIG_PENDING) ? 's' : '-';
|
||||||
str[9] = (flags & PM_SIG_PENDING) ? 's' : '-';
|
str[9] = (flags & PRIV_PROC) ? 'p' : '-';
|
||||||
str[10] = (flags & PRIV_PROC) ? 'p' : '-';
|
str[10] = (flags & PARTIAL_EXEC) ? 'x' : '-';
|
||||||
str[11] = (flags & PARTIAL_EXEC) ? 'x' : '-';
|
str[11] = (flags & DELAY_CALL) ? 'd' : '-';
|
||||||
str[12] = (flags & DELAY_CALL) ? 'd' : '-';
|
str[12] = '\0';
|
||||||
str[13] = '\0';
|
|
||||||
|
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
@ -51,7 +50,7 @@ void mproc_dmp()
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Process manager (PM) process table dump\n");
|
printf("Process manager (PM) process table dump\n");
|
||||||
printf("-process- -nr-pnr-tnr- --pid--ppid--pgrp- -uid-- -gid-- -nice- -flags-------\n");
|
printf("-process- -nr-pnr-tnr- --pid--ppid--pgrp- -uid-- -gid-- -nice- -flags------\n");
|
||||||
for (i=prev_i; i<NR_PROCS; i++) {
|
for (i=prev_i; i<NR_PROCS; i++) {
|
||||||
mp = &mproc[i];
|
mp = &mproc[i];
|
||||||
if (mp->mp_pid == 0 && i != PM_PROC_NR) continue;
|
if (mp->mp_pid == 0 && i != PM_PROC_NR) continue;
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
*
|
*
|
||||||
* The entry points into this file are:
|
* The entry points into this file are:
|
||||||
* do_itimer: perform the ITIMER system call
|
* do_itimer: perform the ITIMER system call
|
||||||
* do_alarm: perform the ALARM system call
|
|
||||||
* set_alarm: tell the timer interface to start or stop a process timer
|
* set_alarm: tell the timer interface to start or stop a process timer
|
||||||
* check_vtimer: check if one of the virtual timers needs to be restarted
|
* check_vtimer: check if one of the virtual timers needs to be restarted
|
||||||
*/
|
*/
|
||||||
|
@ -153,30 +152,6 @@ int do_itimer()
|
||||||
return(r);
|
return(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*===========================================================================*
|
|
||||||
* do_alarm *
|
|
||||||
*===========================================================================*/
|
|
||||||
int do_alarm()
|
|
||||||
{
|
|
||||||
struct itimerval value, ovalue;
|
|
||||||
int remaining; /* previous time left in seconds */
|
|
||||||
|
|
||||||
/* retrieve the old timer value, in seconds (rounded up) */
|
|
||||||
get_realtimer(mp, &ovalue);
|
|
||||||
|
|
||||||
remaining = ovalue.it_value.tv_sec;
|
|
||||||
if (ovalue.it_value.tv_usec > 0) remaining++;
|
|
||||||
|
|
||||||
/* set the new timer value */
|
|
||||||
memset(&value, 0, sizeof(value));
|
|
||||||
value.it_value.tv_sec = m_in.seconds;
|
|
||||||
|
|
||||||
set_realtimer(mp, &value);
|
|
||||||
|
|
||||||
/* and return the old timer value */
|
|
||||||
return(remaining);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*===========================================================================*
|
/*===========================================================================*
|
||||||
* getset_vtimer *
|
* getset_vtimer *
|
||||||
*===========================================================================*/
|
*===========================================================================*/
|
||||||
|
|
|
@ -76,7 +76,6 @@ EXTERN struct mproc {
|
||||||
#define IN_USE 0x00001 /* set when 'mproc' slot in use */
|
#define IN_USE 0x00001 /* set when 'mproc' slot in use */
|
||||||
#define WAITING 0x00002 /* set by WAIT system call */
|
#define WAITING 0x00002 /* set by WAIT system call */
|
||||||
#define ZOMBIE 0x00004 /* waiting for parent to issue WAIT call */
|
#define ZOMBIE 0x00004 /* waiting for parent to issue WAIT call */
|
||||||
#define PAUSED 0x00008 /* set by PAUSE system call */
|
|
||||||
#define ALARM_ON 0x00010 /* set when SIGALRM timer started */
|
#define ALARM_ON 0x00010 /* set when SIGALRM timer started */
|
||||||
#define EXITING 0x00020 /* set by EXIT, process is now exiting */
|
#define EXITING 0x00020 /* set by EXIT, process is now exiting */
|
||||||
#define TOLD_PARENT 0x00040 /* parent wait() completed, ZOMBIE off */
|
#define TOLD_PARENT 0x00040 /* parent wait() completed, ZOMBIE off */
|
||||||
|
|
|
@ -51,9 +51,3 @@
|
||||||
#define reply_time m2_l1
|
#define reply_time m2_l1
|
||||||
#define reply_utime m2_l2
|
#define reply_utime m2_l2
|
||||||
#define reply_ntime m2_l2
|
#define reply_ntime m2_l2
|
||||||
#define reply_t1 m4_l1
|
|
||||||
#define reply_t2 m4_l2
|
|
||||||
#define reply_t3 m4_l3
|
|
||||||
#define reply_t4 m4_l4
|
|
||||||
#define reply_t5 m4_l5
|
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@ struct memory;
|
||||||
#include <minix/timers.h>
|
#include <minix/timers.h>
|
||||||
|
|
||||||
/* alarm.c */
|
/* alarm.c */
|
||||||
int do_alarm(void);
|
|
||||||
int do_itimer(void);
|
int do_itimer(void);
|
||||||
void set_alarm(struct mproc *rmp, clock_t ticks);
|
void set_alarm(struct mproc *rmp, clock_t ticks);
|
||||||
void check_vtimer(int proc_nr, int sig);
|
void check_vtimer(int proc_nr, int sig);
|
||||||
|
@ -68,7 +67,6 @@ int do_cprofile(void);
|
||||||
int do_kill(void);
|
int do_kill(void);
|
||||||
int do_srv_kill(void);
|
int do_srv_kill(void);
|
||||||
int process_ksig(endpoint_t proc_nr_e, int signo);
|
int process_ksig(endpoint_t proc_nr_e, int signo);
|
||||||
int do_pause(void);
|
|
||||||
int check_sig(pid_t proc_id, int signo, int ksig);
|
int check_sig(pid_t proc_id, int signo, int ksig);
|
||||||
void sig_proc(struct mproc *rmp, int signo, int trace, int ksig);
|
void sig_proc(struct mproc *rmp, int signo, int trace, int ksig);
|
||||||
int do_sigaction(void);
|
int do_sigaction(void);
|
||||||
|
@ -83,7 +81,6 @@ void vm_notify_sig_wrapper(endpoint_t ep);
|
||||||
/* time.c */
|
/* time.c */
|
||||||
int do_stime(void);
|
int do_stime(void);
|
||||||
int do_time(void);
|
int do_time(void);
|
||||||
int do_times(void);
|
|
||||||
int do_getres(void);
|
int do_getres(void);
|
||||||
int do_gettime(void);
|
int do_gettime(void);
|
||||||
int do_settime(void);
|
int do_settime(void);
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
* do_sigreturn: perform the SIGRETURN system call
|
* do_sigreturn: perform the SIGRETURN system call
|
||||||
* do_sigsuspend: perform the SIGSUSPEND system call
|
* do_sigsuspend: perform the SIGSUSPEND system call
|
||||||
* do_kill: perform the KILL system call
|
* do_kill: perform the KILL system call
|
||||||
* do_pause: perform the PAUSE system call
|
|
||||||
* process_ksig: process a signal an behalf of the kernel
|
* process_ksig: process a signal an behalf of the kernel
|
||||||
* sig_proc: interrupt or terminate a signaled process
|
* sig_proc: interrupt or terminate a signaled process
|
||||||
* check_sig: check which processes to signal with sig_proc()
|
* check_sig: check which processes to signal with sig_proc()
|
||||||
|
@ -290,17 +289,6 @@ int process_ksig(endpoint_t proc_nr_e, int signo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*===========================================================================*
|
|
||||||
* do_pause *
|
|
||||||
*===========================================================================*/
|
|
||||||
int do_pause()
|
|
||||||
{
|
|
||||||
/* Perform the pause() system call. */
|
|
||||||
|
|
||||||
mp->mp_flags |= PAUSED;
|
|
||||||
return(SUSPEND);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*===========================================================================*
|
/*===========================================================================*
|
||||||
* sig_proc *
|
* sig_proc *
|
||||||
*===========================================================================*/
|
*===========================================================================*/
|
||||||
|
@ -636,10 +624,9 @@ static void unpause(rmp)
|
||||||
struct mproc *rmp; /* which process */
|
struct mproc *rmp; /* which process */
|
||||||
{
|
{
|
||||||
/* A signal is to be sent to a process. If that process is hanging on a
|
/* A signal is to be sent to a process. If that process is hanging on a
|
||||||
* system call, the system call must be terminated with EINTR. Possible
|
* system call, the system call must be terminated with EINTR. First check if
|
||||||
* calls are PAUSE, WAIT, READ and WRITE, the latter two for pipes and ttys.
|
* the process is hanging on an PM call. If not, tell VFS, so it can check for
|
||||||
* First check if the process is hanging on an PM call. If not, tell VFS,
|
* interruptible calls such as READs and WRITEs from pipes, ttys and the like.
|
||||||
* so it can check for READs and WRITEs from pipes, ttys and the like.
|
|
||||||
*/
|
*/
|
||||||
message m;
|
message m;
|
||||||
int r;
|
int r;
|
||||||
|
@ -648,8 +635,8 @@ struct mproc *rmp; /* which process */
|
||||||
if (rmp->mp_flags & DELAY_CALL)
|
if (rmp->mp_flags & DELAY_CALL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Check to see if process is hanging on a PAUSE, WAIT or SIGSUSPEND call. */
|
/* Check to see if process is hanging on a WAIT or SIGSUSPEND call. */
|
||||||
if (rmp->mp_flags & (PAUSED | WAITING | SIGSUSPENDED)) {
|
if (rmp->mp_flags & (WAITING | SIGSUSPENDED)) {
|
||||||
/* Stop process from running. No delay calls: it called us. */
|
/* Stop process from running. No delay calls: it called us. */
|
||||||
if ((r = sys_stop(rmp->mp_endpoint)) != OK)
|
if ((r = sys_stop(rmp->mp_endpoint)) != OK)
|
||||||
panic("sys_stop failed: %d", r);
|
panic("sys_stop failed: %d", r);
|
||||||
|
@ -743,8 +730,8 @@ int signo; /* signal to send to process (1 to _NSIG-1) */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Was the process suspended in PM? Then interrupt the blocking call. */
|
/* Was the process suspended in PM? Then interrupt the blocking call. */
|
||||||
if (rmp->mp_flags & (PAUSED | WAITING | SIGSUSPENDED)) {
|
if (rmp->mp_flags & (WAITING | SIGSUSPENDED)) {
|
||||||
rmp->mp_flags &= ~(PAUSED | WAITING | SIGSUSPENDED);
|
rmp->mp_flags &= ~(WAITING | SIGSUSPENDED);
|
||||||
|
|
||||||
setreply(slot, EINTR);
|
setreply(slot, EINTR);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,9 +38,9 @@ int (*call_vec[])(void) = {
|
||||||
do_get, /* 24 = getuid */
|
do_get, /* 24 = getuid */
|
||||||
do_stime, /* 25 = stime */
|
do_stime, /* 25 = stime */
|
||||||
do_trace, /* 26 = ptrace */
|
do_trace, /* 26 = ptrace */
|
||||||
do_alarm, /* 27 = alarm */
|
no_sys, /* 27 = unused */
|
||||||
no_sys, /* 28 = fstat */
|
no_sys, /* 28 = fstat */
|
||||||
do_pause, /* 29 = pause */
|
no_sys, /* 29 = unused */
|
||||||
no_sys, /* 30 = utime */
|
no_sys, /* 30 = utime */
|
||||||
do_getepinfo, /* 31 = getepinfo */
|
do_getepinfo, /* 31 = getepinfo */
|
||||||
do_set, /* 32 = setgroups */
|
do_set, /* 32 = setgroups */
|
||||||
|
@ -54,7 +54,7 @@ int (*call_vec[])(void) = {
|
||||||
no_sys, /* 40 = rmdir */
|
no_sys, /* 40 = rmdir */
|
||||||
no_sys, /* 41 = dup */
|
no_sys, /* 41 = dup */
|
||||||
no_sys, /* 42 = pipe */
|
no_sys, /* 42 = pipe */
|
||||||
do_times, /* 43 = times */
|
no_sys, /* 43 = unused */
|
||||||
no_sys, /* 44 = unused */
|
no_sys, /* 44 = unused */
|
||||||
no_sys, /* 45 = unused */
|
no_sys, /* 45 = unused */
|
||||||
do_set, /* 46 = setgid */
|
do_set, /* 46 = setgid */
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
* do_settime: perform the CLOCK_SETTIME system call
|
* do_settime: perform the CLOCK_SETTIME system call
|
||||||
* do_time: perform the TIME system call
|
* do_time: perform the TIME system call
|
||||||
* do_stime: perform the STIME system call
|
* do_stime: perform the STIME system call
|
||||||
* do_times: perform the TIMES system call
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "pm.h"
|
#include "pm.h"
|
||||||
|
@ -134,25 +133,3 @@ int do_stime()
|
||||||
|
|
||||||
return(OK);
|
return(OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*===========================================================================*
|
|
||||||
* do_times *
|
|
||||||
*===========================================================================*/
|
|
||||||
int do_times()
|
|
||||||
{
|
|
||||||
/* Perform the times(buffer) system call. */
|
|
||||||
register struct mproc *rmp = mp;
|
|
||||||
clock_t user_time, sys_time, uptime;
|
|
||||||
int s;
|
|
||||||
|
|
||||||
if (OK != (s=sys_times(who_e, &user_time, &sys_time, &uptime, NULL)))
|
|
||||||
panic("do_times couldn't get times: %d", s);
|
|
||||||
rmp->mp_reply.reply_t1 = user_time; /* user time */
|
|
||||||
rmp->mp_reply.reply_t2 = sys_time; /* system time */
|
|
||||||
rmp->mp_reply.reply_t3 = rmp->mp_child_utime; /* child user time */
|
|
||||||
rmp->mp_reply.reply_t4 = rmp->mp_child_stime; /* child system time */
|
|
||||||
rmp->mp_reply.reply_t5 = uptime; /* uptime since boot */
|
|
||||||
|
|
||||||
return(OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -78,7 +78,7 @@ static void pid_psinfo(int i)
|
||||||
else if (proc[i].p_rts_flags == 0)
|
else if (proc[i].p_rts_flags == 0)
|
||||||
state = STATE_RUN; /* in run-queue */
|
state = STATE_RUN; /* in run-queue */
|
||||||
else if (fp_is_blocked(&fproc[pi]) ||
|
else if (fp_is_blocked(&fproc[pi]) ||
|
||||||
(mproc[pi].mp_flags & (WAITING | PAUSED | SIGSUSPENDED)))
|
(mproc[pi].mp_flags & (WAITING | SIGSUSPENDED)))
|
||||||
state = STATE_SLEEP; /* sleeping */
|
state = STATE_SLEEP; /* sleeping */
|
||||||
else
|
else
|
||||||
state = STATE_WAIT; /* waiting */
|
state = STATE_WAIT; /* waiting */
|
||||||
|
@ -116,9 +116,7 @@ static void pid_psinfo(int i)
|
||||||
|
|
||||||
/* If the process is not a kernel task, we add some extra info. */
|
/* If the process is not a kernel task, we add some extra info. */
|
||||||
if (!task) {
|
if (!task) {
|
||||||
if (mproc[pi].mp_flags & PAUSED)
|
if (mproc[pi].mp_flags & WAITING)
|
||||||
p_state = PSTATE_PAUSED;
|
|
||||||
else if (mproc[pi].mp_flags & WAITING)
|
|
||||||
p_state = PSTATE_WAITING;
|
p_state = PSTATE_WAITING;
|
||||||
else if (mproc[pi].mp_flags & SIGSUSPENDED)
|
else if (mproc[pi].mp_flags & SIGSUSPENDED)
|
||||||
p_state = PSTATE_SIGSUSP;
|
p_state = PSTATE_SIGSUSP;
|
||||||
|
|
|
@ -41,9 +41,9 @@ int (*call_vec[])(message *m_out) = {
|
||||||
no_sys, /* 24 = getuid */
|
no_sys, /* 24 = getuid */
|
||||||
no_sys, /* 25 = (stime) */
|
no_sys, /* 25 = (stime) */
|
||||||
no_sys, /* 26 = ptrace */
|
no_sys, /* 26 = ptrace */
|
||||||
no_sys, /* 27 = alarm */
|
no_sys, /* 27 = unused */
|
||||||
no_sys, /* 28 = unused (was old fstat)*/
|
no_sys, /* 28 = unused (was old fstat)*/
|
||||||
no_sys, /* 29 = pause */
|
no_sys, /* 29 = unused */
|
||||||
do_utime, /* 30 = utime */
|
do_utime, /* 30 = utime */
|
||||||
no_sys, /* 31 = (stty) */
|
no_sys, /* 31 = (stty) */
|
||||||
no_sys, /* 32 = (gtty) */
|
no_sys, /* 32 = (gtty) */
|
||||||
|
@ -57,7 +57,7 @@ int (*call_vec[])(message *m_out) = {
|
||||||
do_unlink, /* 40 = rmdir */
|
do_unlink, /* 40 = rmdir */
|
||||||
no_sys, /* 41 = unused */
|
no_sys, /* 41 = unused */
|
||||||
do_pipe, /* 42 = pipe */
|
do_pipe, /* 42 = pipe */
|
||||||
no_sys, /* 43 = times */
|
no_sys, /* 43 = unused */
|
||||||
no_sys, /* 44 = (prof) */
|
no_sys, /* 44 = (prof) */
|
||||||
do_slink, /* 45 = symlink */
|
do_slink, /* 45 = symlink */
|
||||||
no_sys, /* 46 = (setgid)*/
|
no_sys, /* 46 = (setgid)*/
|
||||||
|
|
Loading…
Reference in a new issue