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
					
				@ -193,7 +193,6 @@ static char *prrecv(struct pstat *ps)
 | 
			
		||||
  blkstr = "?";
 | 
			
		||||
  if (ps->ps_recv == PM_PROC_NR) {
 | 
			
		||||
	switch (ps->ps_pstate) {
 | 
			
		||||
	case PSTATE_PAUSED: blkstr = "pause"; break;
 | 
			
		||||
	case PSTATE_WAITING: blkstr = "wait"; break;
 | 
			
		||||
	case PSTATE_SIGSUSP: blkstr = "sigsusp"; break;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -2323,7 +2323,7 @@
 | 
			
		||||
./usr/man/man2/accept.2			minix-sys
 | 
			
		||||
./usr/man/man2/access.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/brk.2			minix-sys
 | 
			
		||||
./usr/man/man2/chdir.2			minix-sys
 | 
			
		||||
@ -2369,7 +2369,7 @@
 | 
			
		||||
./usr/man/man2/mknod.2			minix-sys
 | 
			
		||||
./usr/man/man2/mount.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/pipe2.2			minix-sys
 | 
			
		||||
./usr/man/man2/ptrace.2			minix-sys
 | 
			
		||||
@ -2403,7 +2403,7 @@
 | 
			
		||||
./usr/man/man2/symlink.2		minix-sys
 | 
			
		||||
./usr/man/man2/sync.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/umask.2			minix-sys
 | 
			
		||||
./usr/man/man2/uname.2			minix-sys
 | 
			
		||||
 | 
			
		||||
@ -24,8 +24,6 @@
 | 
			
		||||
#define GETUID		  24
 | 
			
		||||
#define STIME		  25
 | 
			
		||||
#define PTRACE		  26
 | 
			
		||||
#define ALARM		  27
 | 
			
		||||
#define PAUSE		  29
 | 
			
		||||
#define UTIME		  30 
 | 
			
		||||
#define GETEPINFO	  31
 | 
			
		||||
#define SETGROUPS	  32
 | 
			
		||||
@ -37,7 +35,6 @@
 | 
			
		||||
#define MKDIR		  39
 | 
			
		||||
#define RMDIR		  40
 | 
			
		||||
#define PIPE		  42 
 | 
			
		||||
#define TIMES		  43
 | 
			
		||||
#define SYMLINK		  45
 | 
			
		||||
#define SETGID		  46
 | 
			
		||||
#define GETGID		  47
 | 
			
		||||
 | 
			
		||||
@ -25,7 +25,6 @@
 | 
			
		||||
 | 
			
		||||
/* PM sleep states. */
 | 
			
		||||
#define PSTATE_NONE	'-'
 | 
			
		||||
#define PSTATE_PAUSED	'P'
 | 
			
		||||
#define PSTATE_WAITING	'W'
 | 
			
		||||
#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)(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 \
 | 
			
		||||
	fork.2 getgid.2 getitimer.2 getnucred.2 getpeereid.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 \
 | 
			
		||||
	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 \
 | 
			
		||||
	rmdir.2 select.2 send.2 sendmsg.2 sendto.2 setsid.2 \
 | 
			
		||||
	setsockopt.2 setuid.2 shutdown.2 sigaction.2 sigpending.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
 | 
			
		||||
 | 
			
		||||
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 str[14];
 | 
			
		||||
	static char str[13];
 | 
			
		||||
	str[0] = (flags & WAITING) ? 'W' : '-';
 | 
			
		||||
	str[1] = (flags & ZOMBIE)  ? 'Z' : '-';
 | 
			
		||||
	str[2] = (flags & PAUSED)  ? 'P' : '-';
 | 
			
		||||
	str[3] = (flags & ALARM_ON)  ? 'A' : '-';
 | 
			
		||||
	str[4] = (flags & EXITING) ? 'E' : '-';
 | 
			
		||||
	str[5] = (flags & STOPPED)  ? 'S' : '-';
 | 
			
		||||
	str[6] = (flags & SIGSUSPENDED)  ? 'U' : '-';
 | 
			
		||||
	str[7] = (flags & REPLY)  ? 'R' : '-';
 | 
			
		||||
	str[8] = (flags & VFS_CALL) ? 'F' : '-';
 | 
			
		||||
	str[9] = (flags & PM_SIG_PENDING) ? 's' : '-';
 | 
			
		||||
	str[10] = (flags & PRIV_PROC)  ? 'p' : '-';
 | 
			
		||||
	str[11] = (flags & PARTIAL_EXEC) ? 'x' : '-';
 | 
			
		||||
	str[12] = (flags & DELAY_CALL) ? 'd' : '-';
 | 
			
		||||
	str[13] = '\0';
 | 
			
		||||
	str[2] = (flags & ALARM_ON)  ? 'A' : '-';
 | 
			
		||||
	str[3] = (flags & EXITING) ? 'E' : '-';
 | 
			
		||||
	str[4] = (flags & STOPPED)  ? 'S' : '-';
 | 
			
		||||
	str[5] = (flags & SIGSUSPENDED)  ? 'U' : '-';
 | 
			
		||||
	str[6] = (flags & REPLY)  ? 'R' : '-';
 | 
			
		||||
	str[7] = (flags & VFS_CALL) ? 'F' : '-';
 | 
			
		||||
	str[8] = (flags & PM_SIG_PENDING) ? 's' : '-';
 | 
			
		||||
	str[9] = (flags & PRIV_PROC)  ? 'p' : '-';
 | 
			
		||||
	str[10] = (flags & PARTIAL_EXEC) ? 'x' : '-';
 | 
			
		||||
	str[11] = (flags & DELAY_CALL) ? 'd' : '-';
 | 
			
		||||
	str[12] = '\0';
 | 
			
		||||
 | 
			
		||||
	return str;
 | 
			
		||||
}
 | 
			
		||||
@ -51,7 +50,7 @@ void mproc_dmp()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  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++) {
 | 
			
		||||
  	mp = &mproc[i];
 | 
			
		||||
  	if (mp->mp_pid == 0 && i != PM_PROC_NR) continue;
 | 
			
		||||
 | 
			
		||||
@ -4,7 +4,6 @@
 | 
			
		||||
 *
 | 
			
		||||
 * The entry points into this file are:
 | 
			
		||||
 *   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
 | 
			
		||||
 *   check_vtimer: check if one of the virtual timers needs to be restarted
 | 
			
		||||
 */
 | 
			
		||||
@ -153,30 +152,6 @@ int do_itimer()
 | 
			
		||||
  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				     * 
 | 
			
		||||
 *===========================================================================*/
 | 
			
		||||
 | 
			
		||||
@ -76,7 +76,6 @@ EXTERN struct mproc {
 | 
			
		||||
#define IN_USE		0x00001	/* set when 'mproc' slot in use */
 | 
			
		||||
#define WAITING		0x00002	/* set by WAIT system 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 EXITING		0x00020	/* set by EXIT, process is now exiting */
 | 
			
		||||
#define TOLD_PARENT	0x00040	/* parent wait() completed, ZOMBIE off */
 | 
			
		||||
 | 
			
		||||
@ -51,9 +51,3 @@
 | 
			
		||||
#define reply_time      m2_l1
 | 
			
		||||
#define reply_utime     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>
 | 
			
		||||
 | 
			
		||||
/* alarm.c */
 | 
			
		||||
int do_alarm(void);
 | 
			
		||||
int do_itimer(void);
 | 
			
		||||
void set_alarm(struct mproc *rmp, clock_t ticks);
 | 
			
		||||
void check_vtimer(int proc_nr, int sig);
 | 
			
		||||
@ -68,7 +67,6 @@ int do_cprofile(void);
 | 
			
		||||
int do_kill(void);
 | 
			
		||||
int do_srv_kill(void);
 | 
			
		||||
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);
 | 
			
		||||
void sig_proc(struct mproc *rmp, int signo, int trace, int ksig);
 | 
			
		||||
int do_sigaction(void);
 | 
			
		||||
@ -83,7 +81,6 @@ void vm_notify_sig_wrapper(endpoint_t ep);
 | 
			
		||||
/* time.c */
 | 
			
		||||
int do_stime(void);
 | 
			
		||||
int do_time(void);
 | 
			
		||||
int do_times(void);
 | 
			
		||||
int do_getres(void);
 | 
			
		||||
int do_gettime(void);
 | 
			
		||||
int do_settime(void);
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,6 @@
 | 
			
		||||
 *   do_sigreturn:	perform the SIGRETURN system call
 | 
			
		||||
 *   do_sigsuspend:	perform the SIGSUSPEND 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
 | 
			
		||||
 *   sig_proc:		interrupt or terminate a signaled process
 | 
			
		||||
 *   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				     *
 | 
			
		||||
 *===========================================================================*/
 | 
			
		||||
@ -636,10 +624,9 @@ static void unpause(rmp)
 | 
			
		||||
struct mproc *rmp;		/* which process */
 | 
			
		||||
{
 | 
			
		||||
/* 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
 | 
			
		||||
 * calls are PAUSE, WAIT, READ and WRITE, the latter two for pipes and ttys.
 | 
			
		||||
 * First check if the process is hanging on an PM call.  If not, tell VFS,
 | 
			
		||||
 * so it can check for READs and WRITEs from pipes, ttys and the like.
 | 
			
		||||
 * system call, the system call must be terminated with EINTR.  First check if
 | 
			
		||||
 * the process is hanging on an PM call.  If not, tell VFS, so it can check for
 | 
			
		||||
 * interruptible calls such as READs and WRITEs from pipes, ttys and the like.
 | 
			
		||||
 */
 | 
			
		||||
  message m;
 | 
			
		||||
  int r;
 | 
			
		||||
@ -648,8 +635,8 @@ struct mproc *rmp;		/* which process */
 | 
			
		||||
  if (rmp->mp_flags & DELAY_CALL)
 | 
			
		||||
	return;
 | 
			
		||||
 | 
			
		||||
  /* Check to see if process is hanging on a PAUSE, WAIT or SIGSUSPEND call. */
 | 
			
		||||
  if (rmp->mp_flags & (PAUSED | WAITING | SIGSUSPENDED)) {
 | 
			
		||||
  /* Check to see if process is hanging on a WAIT or SIGSUSPEND call. */
 | 
			
		||||
  if (rmp->mp_flags & (WAITING | SIGSUSPENDED)) {
 | 
			
		||||
	/* Stop process from running. No delay calls: it called us. */
 | 
			
		||||
	if ((r = sys_stop(rmp->mp_endpoint)) != OK)
 | 
			
		||||
		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. */
 | 
			
		||||
  if (rmp->mp_flags & (PAUSED | WAITING | SIGSUSPENDED)) {
 | 
			
		||||
	rmp->mp_flags &= ~(PAUSED | WAITING | SIGSUSPENDED);
 | 
			
		||||
  if (rmp->mp_flags & (WAITING | SIGSUSPENDED)) {
 | 
			
		||||
	rmp->mp_flags &= ~(WAITING | SIGSUSPENDED);
 | 
			
		||||
 | 
			
		||||
	setreply(slot, EINTR);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -38,9 +38,9 @@ int (*call_vec[])(void) = {
 | 
			
		||||
	do_get,		/* 24 = getuid	*/
 | 
			
		||||
	do_stime,	/* 25 = stime	*/
 | 
			
		||||
	do_trace,	/* 26 = ptrace	*/
 | 
			
		||||
	do_alarm,	/* 27 = alarm	*/
 | 
			
		||||
	no_sys,		/* 27 = unused	*/
 | 
			
		||||
	no_sys,		/* 28 = fstat	*/
 | 
			
		||||
	do_pause,	/* 29 = pause	*/
 | 
			
		||||
	no_sys,		/* 29 = unused	*/
 | 
			
		||||
	no_sys,		/* 30 = utime	*/
 | 
			
		||||
	do_getepinfo,	/* 31 = getepinfo */
 | 
			
		||||
	do_set, 	/* 32 = setgroups */
 | 
			
		||||
@ -54,7 +54,7 @@ int (*call_vec[])(void) = {
 | 
			
		||||
	no_sys,		/* 40 = rmdir	*/
 | 
			
		||||
	no_sys,		/* 41 = dup	*/
 | 
			
		||||
	no_sys,		/* 42 = pipe	*/
 | 
			
		||||
	do_times,	/* 43 = times	*/
 | 
			
		||||
	no_sys,		/* 43 = unused	*/
 | 
			
		||||
	no_sys,		/* 44 = unused	*/
 | 
			
		||||
	no_sys,		/* 45 = unused	*/
 | 
			
		||||
	do_set,		/* 46 = setgid	*/
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,6 @@
 | 
			
		||||
 *   do_settime:	perform the CLOCK_SETTIME system call
 | 
			
		||||
 *   do_time:		perform the TIME system call
 | 
			
		||||
 *   do_stime:		perform the STIME system call
 | 
			
		||||
 *   do_times:		perform the TIMES system call
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "pm.h"
 | 
			
		||||
@ -134,25 +133,3 @@ int do_stime()
 | 
			
		||||
 | 
			
		||||
  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)
 | 
			
		||||
			state = STATE_RUN;	/* in run-queue */
 | 
			
		||||
		else if (fp_is_blocked(&fproc[pi]) ||
 | 
			
		||||
		(mproc[pi].mp_flags & (WAITING | PAUSED | SIGSUSPENDED)))
 | 
			
		||||
		(mproc[pi].mp_flags & (WAITING | SIGSUSPENDED)))
 | 
			
		||||
			state = STATE_SLEEP;	/* sleeping */
 | 
			
		||||
		else
 | 
			
		||||
			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 (!task) {
 | 
			
		||||
		if (mproc[pi].mp_flags & PAUSED)
 | 
			
		||||
			p_state = PSTATE_PAUSED;
 | 
			
		||||
		else if (mproc[pi].mp_flags & WAITING)
 | 
			
		||||
		if (mproc[pi].mp_flags & WAITING)
 | 
			
		||||
			p_state = PSTATE_WAITING;
 | 
			
		||||
		else if (mproc[pi].mp_flags & SIGSUSPENDED)
 | 
			
		||||
			p_state = PSTATE_SIGSUSP;
 | 
			
		||||
 | 
			
		||||
@ -41,9 +41,9 @@ int (*call_vec[])(message *m_out) = {
 | 
			
		||||
	no_sys,		/* 24 = getuid	*/
 | 
			
		||||
	no_sys,		/* 25 = (stime)	*/
 | 
			
		||||
	no_sys,		/* 26 = ptrace	*/
 | 
			
		||||
	no_sys,		/* 27 = alarm	*/
 | 
			
		||||
	no_sys,		/* 27 = unused	*/
 | 
			
		||||
	no_sys,		/* 28 = unused (was old fstat)*/
 | 
			
		||||
	no_sys,		/* 29 = pause	*/
 | 
			
		||||
	no_sys,		/* 29 = unused	*/
 | 
			
		||||
	do_utime,	/* 30 = utime	*/
 | 
			
		||||
	no_sys,		/* 31 = (stty)	*/
 | 
			
		||||
	no_sys,		/* 32 = (gtty)	*/
 | 
			
		||||
@ -57,7 +57,7 @@ int (*call_vec[])(message *m_out) = {
 | 
			
		||||
	do_unlink,	/* 40 = rmdir	*/
 | 
			
		||||
	no_sys,		/* 41 = unused  */
 | 
			
		||||
	do_pipe,	/* 42 = pipe	*/
 | 
			
		||||
	no_sys,		/* 43 = times	*/
 | 
			
		||||
	no_sys,		/* 43 = unused	*/
 | 
			
		||||
	no_sys,		/* 44 = (prof)	*/
 | 
			
		||||
	do_slink,	/* 45 = symlink	*/
 | 
			
		||||
	no_sys,		/* 46 = (setgid)*/
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user