is it fair to say I don't need to do the P/V stuff on the sputline because it's handled in the sputc?
int sputc(struct stty *tty, int c)
{
/*(1). wait for room in outbuf[];*/
P(&tty->outRoom);
/*(2). insert c into outbuf[];NOTE: MUST HANDLE POSSIBLE INTERFERENCE FROM shandler()!*/
/* disable interrupts */
lock();
tty->outbuf[tty->outhead++] = c;
tty->outhead %= BUFLEN;
unlock();
/*(3). if TX interrupt is off, turn on TX interrupt (to start output);*/
enable_tx(tty);
}/**/
int sputline(char* line)
{
struct stty *tty;
tty = &stty[0];
while (*line)
{
sputc(tty, *line++);
}/*end while line exists*/
/*(1). one process at a time!*/
/*(2). call sputc() repeatedly to copy chars into outbuf[]*/
/*(3). allow another process*/
}/**/