~kris/9p

9hist

d8602a450542b09f9ce6e58a39ddc933c945c65e — David du Colombier 26 years ago 6d70572
Plan 9 from Bell Labs 2000-07-09
1 files changed, 89 insertions(+), 83 deletions(-)

M port/devns16552.c
M port/devns16552.c => port/devns16552.c +89 -83
@@ 896,8 896,8 @@ uartstatus(Chan*, Uart *p, void *buf, long n, long offset)
	istat = p->sticky[Iena];
	fstat = p->sticky[Format];
	snprint(str, sizeof str,
		"b%d c%d d%d e%d l%d m%d p%c r%d s%d\n"
		"dev(%d) type(%d) framing(%d) overruns(%d)%s%s%s%s%s\n",
		"b%d c%d d%d e%d l%d m%d p%c r%d s%d i%d\n"
		"dev(%d) type(%d) framing(%d) overruns(%d)%s%s%s%s\n",

		p->baud,
		p->hup_dcd, 


@@ 908,12 908,12 @@ uartstatus(Chan*, Uart *p, void *buf, long n, long offset)
		(fstat & Pena) ? ((fstat & Peven) ? 'e' : 'o') : 'n',
		(tstat & Rts) != 0,
		(fstat & Stop2) ? 2 : 1,
		p->fifoon,

		p->dev,
		p->type,
		p->frame,
		p->overrun, 
		p->fifoon       ? " fifo" : "",
		(mstat & Cts)    ? " cts"  : "",
		(mstat & Dsr)    ? " dsr"  : "",
		(mstat & Dcd)    ? " dcd"  : "",


@@ 952,93 952,99 @@ static void
ns16552ctl(Uart *p, char *cmd)
{
	int i, n;
	char *f[32];
	int nf;

	/* let output drain for a while */
	for(i = 0; i < 16 && qlen(p->oq); i++)
		tsleep(&p->r, (int(*)(void*))qlen, p->oq, 125);

	if(strncmp(cmd, "break", 5) == 0){
		ns16552break(p, 0);
		return;
	}
	nf = getfields(cmd, f, nelem(f), 1, " \t\n");

	for(i = 0; i < nf; i++){

	n = atoi(cmd+1);
	switch(*cmd){
	case 'B':
	case 'b':
		ns16552setbaud(p, n);
		break;
	case 'C':
	case 'c':
		ns16552dcdhup(p, n);
		break;
	case 'D':
	case 'd':
		ns16552dtr(p, n);
		break;
	case 'E':
	case 'e':
		ns16552dsrhup(p, n);
		break;
	case 'f':
	case 'F':
		qflush(p->oq);
		break;
	case 'H':
	case 'h':
		qhangup(p->iq, 0);
		qhangup(p->oq, 0);
		break;
	case 'i':
	case 'I':
		lock(&p->flock);
		ns16552fifo(p, n);
		unlock(&p->flock);
		break;
	case 'L':
	case 'l':
		ns16552bits(p, n);
		break;
	case 'm':
	case 'M':
		ns16552mflow(p, n);
		break;
	case 'n':
	case 'N':
		qnoblock(p->oq, n);
		break;
	case 'P':
	case 'p':
		ns16552parity(p, *(cmd+1));
		break;
	case 'K':
	case 'k':
		ns16552break(p, n);
		break;
	case 'R':
	case 'r':
		ns16552rts(p, n);
		break;
	case 'Q':
	case 'q':
		qsetlimit(p->iq, n);
		qsetlimit(p->oq, n);
		break;
	case 'T':
	case 't':
		ns16552dcdts(p, n);
		break;
	case 'W':
	case 'w':
		/* obsolete */
		break;
	case 'X':
	case 'x':
		ilock(&p->tlock);
		p->xonoff = n;
		iunlock(&p->tlock);
		break;
		if(strncmp(f[i], "break", 5) == 0){
			ns16552break(p, 0);
			continue;
		}

		n = atoi(f[i]+1);
		switch(*f[i]){
		case 'B':
		case 'b':
			ns16552setbaud(p, n);
			break;
		case 'C':
		case 'c':
			ns16552dcdhup(p, n);
			break;
		case 'D':
		case 'd':
			ns16552dtr(p, n);
			break;
		case 'E':
		case 'e':
			ns16552dsrhup(p, n);
			break;
		case 'f':
		case 'F':
			qflush(p->oq);
			break;
		case 'H':
		case 'h':
			qhangup(p->iq, 0);
			qhangup(p->oq, 0);
			break;
		case 'i':
		case 'I':
			lock(&p->flock);
			ns16552fifo(p, n);
			unlock(&p->flock);
			break;
		case 'L':
		case 'l':
			ns16552bits(p, n);
			break;
		case 'm':
		case 'M':
			ns16552mflow(p, n);
			break;
		case 'n':
		case 'N':
			qnoblock(p->oq, n);
			break;
		case 'P':
		case 'p':
			ns16552parity(p, *(cmd+1));
			break;
		case 'K':
		case 'k':
			ns16552break(p, n);
			break;
		case 'R':
		case 'r':
			ns16552rts(p, n);
			break;
		case 'Q':
		case 'q':
			qsetlimit(p->iq, n);
			qsetlimit(p->oq, n);
			break;
		case 'T':
		case 't':
			ns16552dcdts(p, n);
			break;
		case 'W':
		case 'w':
			/* obsolete */
			break;
		case 'X':
		case 'x':
			ilock(&p->tlock);
			p->xonoff = n;
			iunlock(&p->tlock);
			break;
		}
	}
}