#
79ccb9af |
| 30-Jul-1995 |
Bruce Evans <bde@FreeBSD.org> |
Don't swap the queue headers to implement concatenation of the queues for TIOCSETA[W]. Swapping an even number of times broke the queue resource limits. This would have broken CRTSCTS flow control
Don't swap the queue headers to implement concatenation of the queues for TIOCSETA[W]. Swapping an even number of times broke the queue resource limits. This would have broken CRTSCTS flow control if the clist slush list was used up.
Don'concatenate the queues for TIOCSETA[W] if one of the queues has a resource limit of 0. Concatenation would cause a panic if one of the queues is nonempty and the other is limited to length 0. This may have caused panics in PPPDISC.
Wake up readers after all transitions of ICANON. When ICANON is turned off it is quite likely that characters will become available to be read.
Reduce indentation near these changes.
show more ...
|
#
d7515ab5 |
| 30-Jul-1995 |
Bruce Evans <bde@FreeBSD.org> |
Split TS_ASLEEP (sleep on output [below low water])into TS_SO_OLOWAT (sleep on output below low water) and TS_SO_OCOMPLETE (sleep on output complete). Most of the support for this has already been co
Split TS_ASLEEP (sleep on output [below low water])into TS_SO_OLOWAT (sleep on output below low water) and TS_SO_OCOMPLETE (sleep on output complete). Most of the support for this has already been committed. Drivers should call ttwwakeup() to handle wakeups whenever output is below low water (and some output event causes this condition to be checked) or TS_BUSY is cleared.
tty.c: Fix the livelock in ttywait() properly by sleeping on output complete, not on output below low water.
Use ttwwakeup() instead of separate select and output wakeups for all wakeups of writers.
Add wakeups of writers for output flushes and carrier/clocal transitions.
Don't go to sleep in ttycheckoutq() if ttstart() reduces the queue to below low water.
Use the timeout built into tsleep() in ttycheckoutq().
Optimize the select wakeup in ttwwakeup(). It seems reasonable to know too much about the internals of tp->t_wsel now that the knowledge is localised in tty.c.
show more ...
|
#
267513a9 |
| 29-Jul-1995 |
Bruce Evans <bde@FreeBSD.org> |
Obtained from: partly from ancient patches by ache and me via 1.1.5
Remove nullmodem().
It may be useful to have a null modem routine, but nullmodem() wasn't one. nullmodem() was identical to ttym
Obtained from: partly from ancient patches by ache and me via 1.1.5
Remove nullmodem().
It may be useful to have a null modem routine, but nullmodem() wasn't one. nullmodem() was identical to ttymodem() except it didn't implement MDMBUF (carrier) flow control, didn't do any wakeups for off to on carrier transitions, and didn't flush the i/o queues for on to off carrier transitions (flushing has the side effect of waking up readers and writers) although it did generate SIGHUPs. The wakeups must normally be done even if nullmodem() is null in case something is sleeping waiting for a carrier transition. In any case, the wakeups should be harmless. They may cause bogus results for select(), but select() is already bogus for nonstandard line disciplines.
show more ...
|
#
abe8bea4 |
| 22-Jul-1995 |
Bruce Evans <bde@FreeBSD.org> |
Obtained from: partly from ancient patches of mine via 1.1.5
Give names to the magic tty i/o sleep addresses and use them. This makes it easier to remember what the addresses are for and to keep th
Obtained from: partly from ancient patches of mine via 1.1.5
Give names to the magic tty i/o sleep addresses and use them. This makes it easier to remember what the addresses are for and to keep them unique.
show more ...
|
#
a16721a1 |
| 22-Jul-1995 |
Bruce Evans <bde@FreeBSD.org> |
Move the inline code for waking up writers to a new function ttwwakeup(). The conditions for doing the wakeup will soon become more complicated and I don't want them duplicated in all drivers.
It's
Move the inline code for waking up writers to a new function ttwwakeup(). The conditions for doing the wakeup will soon become more complicated and I don't want them duplicated in all drivers.
It's probably not worth making ttwwakeup() a macro or an inline function. The cost of the function call is relatively small when there is a process to wake up. There is usually a process to wake up for large writes and the system call overhead dwarfs the function call overhead for small writes.
show more ...
|
#
2ce42987 |
| 22-Jul-1995 |
Bruce Evans <bde@FreeBSD.org> |
Obtained from: partly from ancient patches of mine via 1.1.5
Move static termioschars() from a couple of drivers to tty.c. Now there is only one copy of ttydefchars[].
|
#
6644e306 |
| 21-Jul-1995 |
Bruce Evans <bde@FreeBSD.org> |
Obtained from: partly from ancient patches by ache and me via 1.1.5
Nuke `symbolic sleep message strings'. Use unique literal messages so that `ps l' shows unambiguously where processes are sleepin
Obtained from: partly from ancient patches by ache and me via 1.1.5
Nuke `symbolic sleep message strings'. Use unique literal messages so that `ps l' shows unambiguously where processes are sleeping.
show more ...
|
#
491cb8cd |
| 21-Jul-1995 |
Bruce Evans <bde@FreeBSD.org> |
Obtained from: partly from anancient patch of mine via 1.1.5
Fix races for FIONREAD, TIOCSTI and TIOCSTAT.
|
#
0d1de831 |
| 21-Jul-1995 |
Bruce Evans <bde@FreeBSD.org> |
Obtained from: partly from an ancient patch of mine via 1.1.5
Temporarily nuke TS_WOPEN. It was only used for the obscure MDMBUF flow control option in the kernel and for informational purposes in
Obtained from: partly from an ancient patch of mine via 1.1.5
Temporarily nuke TS_WOPEN. It was only used for the obscure MDMBUF flow control option in the kernel and for informational purposes in `pstat -t'. The latter worked properly only for ptys. In general there may be multiple processes sleeping in open() and multiple processes that successfully opened the tty by opening it in O_NONBLOCK mode or during a window when CLOCAL was set. tty.c doesn't have enough information to maintain the flag but always cleared it in ttyopen().
TS_WOPEN should be restored someday just so that `pstat -t' can display it (MDMBUF is already fixed). Fixing it requires counting of processes sleeping in open() in too many serial drivers.
show more ...
|
#
d83f358f |
| 21-Jul-1995 |
Bruce Evans <bde@FreeBSD.org> |
Obtained from: an ancient patch of mine via 1.1.5
Don't put partial PARMRK escape sequences in the input queue. Use MAX_INPUT = TTYHOG instead of TTYHOG directly for the maximum input queue size.
Obtained from: an ancient patch of mine via 1.1.5
Don't put partial PARMRK escape sequences in the input queue. Use MAX_INPUT = TTYHOG instead of TTYHOG directly for the maximum input queue size. Don't use the bogus MAX_INPUT advertised in <sys/syslimits.h>.
show more ...
|
#
2ef58019 |
| 21-Jul-1995 |
Bruce Evans <bde@FreeBSD.org> |
Add to TODO list and move it to near the top of the file.
|
#
a2a072b5 |
| 21-Jul-1995 |
Bruce Evans <bde@FreeBSD.org> |
Obtained from: ancient usenet posting as applied to 1.1.5 First of many changes required to restore lost stability to the tty driver.
ECHONL is supposed to enable echoing of NL when ECHO is off, but
Obtained from: ancient usenet posting as applied to 1.1.5 First of many changes required to restore lost stability to the tty driver.
ECHONL is supposed to enable echoing of NL when ECHO is off, but it enabled echoing of everything except NL.
show more ...
|
#
a526d6bb |
| 24-Jun-1995 |
Andrey A. Chernov <ache@FreeBSD.org> |
ttywait: convert EWOULDBLOCK to EIO, when t_timeout expired
|
#
13cf82d4 |
| 23-Jun-1995 |
Andrey A. Chernov <ache@FreeBSD.org> |
Replace EWOULDBLOCK to EIO in ttwrite, when t_timeout expired
|
#
d3628763 |
| 11-Jun-1995 |
Rodney W. Grimes <rgrimes@FreeBSD.org> |
Merge RELENG_2_0_5 into HEAD
|
Revision tags: release/2.0.5_cvs |
|
#
9b2e5354 |
| 30-May-1995 |
Rodney W. Grimes <rgrimes@FreeBSD.org> |
Remove trailing whitespace.
|
#
3cfa74c3 |
| 08-May-1995 |
Andrey A. Chernov <ache@FreeBSD.org> |
Make two "ttyout" ttysleep wmesg unique Add t_timeout to ttysleep call into ttywrite
|
#
65e8f118 |
| 07-May-1995 |
Bruce Evans <bde@FreeBSD.org> |
Test the correct nonblocking flag in ttylclose(). IO_NDELAY is only valid in read() and write(). FNONBLOCK is valid in ioctl() and close().
The bug caused hung ptys when a process talked to itself
Test the correct nonblocking flag in ttylclose(). IO_NDELAY is only valid in read() and write(). FNONBLOCK is valid in ioctl() and close().
The bug caused hung ptys when a process talked to itself using nonblocking i/o and exited while the slave pty had output to flush. ttywait() was called and hung. Signals didn't work because the process was exiting. `comcontrol /dev/ttyp0 drainwait 1' worked to terminate the wait. This shows that comcontrol is not limited to hardware control. It has no i386 or driver dependencies and doesn't belong in src/sbin/i386.
Bruce
show more ...
|
#
e2f03b0d |
| 15-Apr-1995 |
Bruce Evans <bde@FreeBSD.org> |
Speed up ttnread() in the !(ICANON | ISIG) case by copying to user space through a temporary buffer instead of one character at a time. The old method takes about 6 usec/char on a 486DX2/66. This i
Speed up ttnread() in the !(ICANON | ISIG) case by copying to user space through a temporary buffer instead of one character at a time. The old method takes about 6 usec/char on a 486DX2/66. This is larger than than the combined interrupt and PIO overhead for a 16550!
This change was first implemented in 1.1.5. It was rewritten for 2.1. The clist access functions allow a simpler implementation at some cost in correctness and speed. There needs to be an ungetc() function to recover from EFAULT, and it wastes time to copy through a temporary buffer.
Don't snoop on single characters that weren't read due to EFAULT. Rewrite a snoop comment in my approximation to English.
Undo bogus exportation of ttnread().
show more ...
|
#
64a49d2d |
| 29-Mar-1995 |
Andrey A. Chernov <ache@FreeBSD.org> |
Oops, fix typing error in prev. commit
|
#
668a9cce |
| 29-Mar-1995 |
Andrey A. Chernov <ache@FreeBSD.org> |
Handle TTY_BI now instead of TTY_FE && c == 0
|
#
532f5941 |
| 29-Mar-1995 |
Andrey A. Chernov <ache@FreeBSD.org> |
Move parmark 0377 double code after control chars processing
|
#
702c5e7e |
| 28-Mar-1995 |
Andrey A. Chernov <ache@FreeBSD.org> |
ttyinput() fixes:
1) Preserve old buffer contents when input buffer overflows.
Old code clear buffer and rewrite it again, if !MAXBEL (for MAXBEL it does right thing :-). F.e. if you type too long
ttyinput() fixes:
1) Preserve old buffer contents when input buffer overflows.
Old code clear buffer and rewrite it again, if !MAXBEL (for MAXBEL it does right thing :-). F.e. if you type too long string, last chars passed, not first ones as expected. Moreover, it flush output queue too in this case without any needs.
2) Don't do IXOFF, if IGNCR and c==\r, ignore completely.
3) If PARMRK is active and !ISTRIP and char == 0377 put yet one 0377 to distinguish it from parity mark sequence. POSIX standard (thanx Bruce).
Reviewed by: Submitted by: Obtained from: CVS:
show more ...
|
#
63cadaef |
| 28-Mar-1995 |
Andrey A. Chernov <ache@FreeBSD.org> |
Bug fixed: parity/framing/break not completely ignored when IGN* is set but cause output restarted. CVS:
|
#
b5e8ce9f |
| 16-Mar-1995 |
Bruce Evans <bde@FreeBSD.org> |
Add and move declarations to fix all of the warnings from `gcc -Wimplicit' (except in netccitt, netiso and netns) and most of the warnings from `gcc -Wnested-externs'. Fix all the bugs found. There
Add and move declarations to fix all of the warnings from `gcc -Wimplicit' (except in netccitt, netiso and netns) and most of the warnings from `gcc -Wnested-externs'. Fix all the bugs found. There were no serious ones.
show more ...
|