~kris/9p

9hist

679ef1451d645b31dfaed9f3e71e8cab81b2178f — David du Colombier 34 years ago 61040d2
Plan 9 from Bell Labs 1992-01-23
2 files changed, 17 insertions(+), 4 deletions(-)

M port/devkprof.c
M power/devhs.c
M port/devkprof.c => port/devkprof.c +1 -1
@@ 195,6 195,6 @@ kproftimer(ulong pc)
		pc -= kprof.minpc;
		pc >>= LRES;
		kprof.buf[pc] += TK2MS(1);
	} else
	}else
		kprof.buf[1] += TK2MS(1);
}

M power/devhs.c => power/devhs.c +16 -3
@@ 18,6 18,8 @@ enum {
	Nhsvme=		1,
};

#define NOW (MACHP(0)->ticks*MS2HZ)

/*
 *  hsvme datakit board
 */


@@ 44,6 46,7 @@ struct Hsvme {
	Queue	*rq;		/* read queue */
	uchar	buf[1024];	/* bytes being collected */
	uchar	*wptr;		/* pointer into buf */
	ulong	time;		/* time byte in buf[0] arrived */
	int	kstarted;	/* true if kernel process started */
	int	started;



@@ 458,6 461,7 @@ upstream(Hsvme *hp, unsigned int ctl)
	bp->flags |= S_DELIM;
	PUTNEXT(hp->rq, bp);
	hp->wptr = hp->buf;
	hp->time = 0;
}

/*


@@ 526,20 530,29 @@ hsvmekproc(void *arg)
				/*
				 *  data byte, put in local buffer
				 */
				if(hp->time == 0)
					hp->time = NOW + 100;
				*hp->wptr++ = c;
				if(hp->wptr == &hp->buf[sizeof hp->buf])
					upstream(hp, 0);
			}
		}
		if(hp->time && NOW >= hp->time)
			upstream(hp, 0);
		USED(locked);
		qunlock(hp);
		locked = 0;

		/*
		 *  sleep if input fifo empty
		 *  Sleep if input fifo empty. Make sure we don't hold onto
		 *  any byte for more tha 1/10 second.
		 */
		if(!notempty(addr))
			sleep(&hp->kr, notempty, addr);
		if(!(addr->csr & REF)){
			if(hp->wptr == hp->buf)
				sleep(&hp->kr, notempty, addr);
			else
				tsleep(&hp->kr, notempty, addr, 100);
		}
	}
}