~kris/9p

9hist

744448b127802672eb7384a101bf523714e9cd0f — David du Colombier 34 years ago 6ed5f87
Plan 9 from Bell Labs 1992-01-29
5 files changed, 33 insertions(+), 4 deletions(-)

M port/devcons.c
M port/devnonet.c
M port/devscc.c
M port/devwren.c
M port/sysproc.c
M port/devcons.c => port/devcons.c +1 -1
@@ 821,7 821,7 @@ conswrite(Chan *c, void *va, long n, ulong offset)
			error(Eperm);
		strncpy(u->p->user, a+8, NAMELEN);
		u->p->user[NAMELEN-1] = '\0';
		memmove(u->p->pgrp->crypt->key, a+NAMELEN+DESKEYLEN, DESKEYLEN);
		memmove(u->p->pgrp->crypt->key, a+8+NAMELEN, DESKEYLEN);
		break;

	case Qnull:

M port/devnonet.c => port/devnonet.c +4 -1
@@ 376,7 376,10 @@ nonetwrite(Chan *c, void *a, long n, ulong offset)
	 *  easier to do here than in nooput
	 */
	if(t == Sctlqid){
		strncpy(buf, a, sizeof buf);
		if(n > sizeof buf - 1)
			n = sizeof buf - 1;
		strncpy(buf, a, n);
		buf[n] = '\0';
		m = getfields(buf, field, 5, ' ');
		if(strcmp(field[0], "connect")==0){
			if(m < 2)

M port/devscc.c => port/devscc.c +22 -1
@@ 101,10 101,16 @@ struct SCC
	Rendez	r;		/* kproc waiting for input */
	Alarm	*a;		/* alarm for waking the kernel process */
 	int	kstarted;	/* kproc started */

	/* idiot flow control */
	int	xonoff;		/* true if we obey this tradition */
	int	blocked;	/* abstinence */
};

int	nscc;
SCC	*scc[8];	/* up to 4 8530's */
#define CTLS	023
#define CTLQ	021

void
onepointseven(void)


@@ 272,7 278,7 @@ sccputs(IOQ *cq, char *s, int n)
	x = splhi();
	lock(cq);
	puts(cq, s, n);
	if(sp->printing == 0){
	if(sp->printing == 0 && sp->blocked==0){
		ch = getc(cq);
		/*kprint("<start %2.2ux>", ch);*/
		if(ch >= 0){


@@ 303,6 309,12 @@ sccintr0(SCC *sp, uchar x)
		while(*sp->ptr&RxReady){
			onepointseven();
			ch = *sp->data;
			if (ch == CTLS && sp->xonoff)
				sp->blocked = 1;
			else if (ch == CTLQ && sp->xonoff) {
				sp->blocked = 0;
				sccputs(sp->oq, "", 0);
			}
			if(cq->putc)
				(*cq->putc)(cq, ch);
			else


@@ 310,6 322,11 @@ sccintr0(SCC *sp, uchar x)
		}
	}
	if(x & TxPendB){
		if (sp->blocked) {
			sccwrreg(sp, 0, ResTxPend);
			sp->printing = 0;
			return;
		}
		cq = sp->oq;
		lock(cq);
		ch = getc(cq);


@@ 503,6 520,10 @@ sccoput(Queue *q, Block *bp)
		case 'w':
			/* obsolete */
			break;
		case 'X':
		case 'x':
			sp->xonoff = n;
			break;
		}
	}else while((m = BLEN(bp)) > 0){
		while ((n = canputc(cq)) == 0){

M port/devwren.c => port/devwren.c +4 -1
@@ 185,7 185,10 @@ wrenread(Chan *c, char *a, long n, ulong offset)
long
wrenwrite(Chan *c, char *a, long n, ulong offset)
{
	return wrenio(c, 1, a, n, offset);
	n = wrenio(c, 1, a, n, offset);
	if(n)
		return n;
	error("end of device");
}

static long

M port/sysproc.c => port/sysproc.c +2 -0
@@ 478,6 478,8 @@ sysforkpgrp(ulong *arg)

	if(mask & FPnamespc)
		pgrpcpy(pg, u->p->pgrp);
	else
		*pg->crypt = *u->p->pgrp->crypt;

	if(mask & FPenv)
		envcpy(eg, u->p->egrp);