~kris/9p

9hist

1a3c0944bfffe600ad0a09d3244497213f11f619 — David du Colombier 31 years ago 8311e2d
Plan 9 from Bell Labs 1995-03-19
4 files changed, 36 insertions(+), 14 deletions(-)

M port/devcons.c
M port/devproc.c
M port/portdat.h
M port/swap.c
M port/devcons.c => port/devcons.c +4 -0
@@ 216,6 216,10 @@ echo(Rune r, char *buf, int n)
		case 'p':
			procdump();
			return;
		case 'k':
			if(!cpuserver)
				killbig();
			break;
		case 'r':
			exit(0);
			break;

M port/devproc.c => port/devproc.c +26 -1
@@ 703,10 703,32 @@ procstopwait(Proc *p, int ctl)
}

void
procctlfgrp(Fgrp *f)
{
	int i;
	Chan *c;

	lock(f);
	f->ref++;
	for(i = 0; i < f->maxfd; i++) {
		c = f->fd[i];
		if(c != 0) {
			f->fd[i] = 0;
			unlock(f);
			close(c);
			lock(f);
		}
	}
	unlock(f);
	closefgrp(f);
}


void
procctlreq(Proc *p, char *va, int n)
{
	char buf[NAMELEN];
	int i;
	char buf[NAMELEN];

	if(n > NAMELEN)
		n = NAMELEN;


@@ 754,6 776,9 @@ procctlreq(Proc *p, char *va, int n)
		ready(p);
	}
	else
	if(strncmp(buf, "closefgrp", 9) == 0)
		procctlfgrp(p->fgrp);
	else
	if(strncmp(buf, "pri", 3) == 0){
		if(n < 4)
			error(Ebadctl);

M port/portdat.h => port/portdat.h +5 -4
@@ 297,11 297,12 @@ struct Swapalloc
{
	Lock;				/* Free map lock */
	int	free;			/* currently free swap pages */
	uchar	*swmap;			/* Base of swap map in memory */
	uchar	*alloc;			/* Round robin allocator */
	uchar	*last;			/* Speed swap allocation */
	uchar	*top;			/* Top of swap map */
	uchar*	swmap;			/* Base of swap map in memory */
	uchar*	alloc;			/* Round robin allocator */
	uchar*	last;			/* Speed swap allocation */
	uchar*	top;			/* Top of swap map */
	Rendez	r;			/* Pager kproc idle sleep */
	Rendez	pause;
	ulong	highwater;		/* Pager start threshold */
	ulong	headroom;		/* Space pager frees under highwater */
}swapalloc;

M port/swap.c => port/swap.c +1 -9
@@ 97,7 97,6 @@ void
pager(void *junk)
{
	int i;
	Image *img;
	Segment *s;
	Proc *p, *ep;



@@ 120,13 119,6 @@ loop:
		if(p->state == Dead || p->kp)
			continue;

		/* don't swap out programs from devroot.c - they
		 * supply important system services
		 */
		img = p->seg[TSEG]->image;
		if(img && devchar[img->c->type] == '/')
			continue;

		if(swapimage.c) {
			for(i = 0; i < NSEG; i++) {
				if(!needpages(junk))


@@ 161,7 153,7 @@ loop:

			/* Emulate the old system if no swap channel */
			print("no physical memory\n");
			tsleep(&swapalloc.r, return0, 0, 5000);
			tsleep(&swapalloc.pause, return0, 0, 5000);
			wakeup(&palloc.r);
		}
	}