Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame^] | 1 | 2001-08-11 Tim Waugh <twaugh@redhat.com> |
| 2 | |
| 3 | * serial.c (get_pci_port): Deal with awkward Titan cards. |
| 4 | |
| 5 | 1998-08-26 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 6 | |
| 7 | * serial.c (rs_open): Correctly decrement the module in-use count |
| 8 | on errors. |
| 9 | |
| 10 | Thu Feb 19 14:24:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 11 | |
| 12 | * tty_io.c (tty_name): Remove the non-reentrant (and non-SMP safe) |
| 13 | version of tty_name, and rename the reentrant _tty_name |
| 14 | function to be tty_name. |
| 15 | (tty_open): Add a warning message stating callout devices |
| 16 | are deprecated. |
| 17 | |
| 18 | Mon Dec 1 08:24:15 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 19 | |
| 20 | * tty_io.c (tty_get_baud_rate): Print a warning syslog if the |
| 21 | tty->alt_speed kludge is used; this means the system is |
| 22 | using the deprecated SPD_HI ioctls. |
| 23 | |
| 24 | Mon Nov 24 10:37:49 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 25 | |
| 26 | * serial.c, esp.c, rocket.c: Change drivers to take advantage of |
| 27 | tty_get_baud_rate(). |
| 28 | |
| 29 | * tty_io.c (tty_get_baud_rate): New function which computes the |
| 30 | correct baud rate for the tty. More factoring out of |
| 31 | common code out of the serial driver to the high-level tty |
| 32 | functions.... |
| 33 | |
| 34 | Sat Nov 22 07:53:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 35 | |
| 36 | * serial.c, esp.c, rocket.c: Add tty->driver.break() routine, and |
| 37 | allow high-level tty code to handle the break and soft |
| 38 | carrier ioctls. |
| 39 | |
| 40 | * tty_ioctl.c (n_tty_ioctl): Support TIOCGSOFTCAR and |
| 41 | TIOCSSOFTCAR, so that device drivers don't have to support |
| 42 | it. |
| 43 | |
| 44 | * serial.c (autoconfig): Change 16750 test to hopefully eliminate |
| 45 | false results by people with strange 16550As being |
| 46 | detected as 16750s. Hopefully 16750s will still be |
| 47 | detected as 16750, and other weird UARTs won't get poorly |
| 48 | autodetected. If this doesn't work, I'll have to disable |
| 49 | the auto identification for the 16750. |
| 50 | |
| 51 | * tty_io.c (tty_hangup): Now actually do the tty hangup |
| 52 | processing during the timer processing, and disable |
| 53 | interrupts while doing the hangup processing. This avoids |
| 54 | several nasty race conditions which happened when the |
| 55 | hangup processing was done asynchronously. |
| 56 | (tty_ioctl): Do break handling in the tty driver if |
| 57 | driver's break function is supported. |
| 58 | (tty_flip_buffer_push): New exported function which should |
| 59 | be used by drivers to push characters in the flip buffer |
| 60 | to the tty handler. This may either be done using a task |
| 61 | queue function for better CPU efficiency, or directly for |
| 62 | low latency operation. |
| 63 | |
| 64 | * serial.c (rs_set_termios): Fix bug rs_set_termios when |
| 65 | transitioning away from B0, submitted by Stanislav |
| 66 | Voronyi. |
| 67 | |
| 68 | Thu Jun 19 20:05:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 69 | |
| 70 | * serial.c (begin_break, end_break, rs_ioctl): Applied patch |
| 71 | to support BSD ioctls to set and clear the break |
| 72 | condition explicitly. |
| 73 | |
| 74 | * console.c (scrup, scrdown, insert_line, delete_line): Applied |
| 75 | fix suggested by Aaron Tiensivu to speed up block scrolls |
| 76 | up and down. |
| 77 | |
| 78 | * n_tty.c (opost_block, write_chan): Added a modified "fast |
| 79 | console" patch which processes a block of text via |
| 80 | "cooking" efficiently. |
| 81 | |
| 82 | Wed Jun 18 15:25:50 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 83 | |
| 84 | * tty_io.c (init_dev, release_dev): Applied fix suggested by Bill |
| 85 | Hawes to prevent race conditions in the tty code. |
| 86 | |
| 87 | * n_tty.c (n_tty_chars_in_buffer): Applied fix suggested by Bill |
| 88 | Hawes so that n_tty_chars_in_buffer returns the correct |
| 89 | value in the case when the tty is in cannonical mode. (To |
| 90 | avoid a pty deadlock with telnetd.) |
| 91 | |
| 92 | Thu Feb 27 01:53:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 93 | |
| 94 | * serial.c (change_speed): Add support for the termios flag |
| 95 | CMSPAR, which allows the user to select stick parity. |
| 96 | (i.e, if PARODD is set, the parity bit is always 1; if |
| 97 | PARRODD is not set, then the parity bit is always 0). |
| 98 | |
| 99 | Wed Feb 26 19:03:10 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 100 | |
| 101 | * serial.c (cleanup_module): Fix memory leak when using the serial |
| 102 | driver as a module; make sure tmp_buf gets freed! |
| 103 | |
| 104 | Tue Feb 25 11:01:59 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 105 | |
| 106 | * serial.c (set_modem_info): Add support for setting and clearing |
| 107 | the OUT1 and OUT2 bits. (For special case UART's, usually |
| 108 | for half-duplex.) |
| 109 | (autoconfig, change_speed): Fix TI 16750 support. |
| 110 | |
| 111 | Sun Feb 16 00:14:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 112 | |
| 113 | * tty_io.c (release_dev): Add sanity check to make sure there are |
| 114 | no waiters on tty->read_wait or tty->write_wait. |
| 115 | |
| 116 | * serial.c (rs_init): Don't autoconfig a device if the I/O region |
| 117 | is already reserved. |
| 118 | |
| 119 | * serial.c (serial_proc_info): Add support for /proc/serial. |
| 120 | |
| 121 | Thu Feb 13 00:49:10 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 122 | |
| 123 | * serial.c (receive_chars): When the UART repotrs an overrun |
| 124 | condition, it does so with a valid character. Changed to |
| 125 | not throw away the valid character, but instead report the |
| 126 | overrun after the valid character. |
| 127 | |
| 128 | * serial.c: Added new #ifdef's for some of the advanced serial |
| 129 | driver features. A minimal driver that only supports COM |
| 130 | 1/2/3/4 without sharing serial interrupts only takes 17k; |
| 131 | the full driver takes 32k. |
| 132 | |
| 133 | Wed Feb 12 14:50:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 134 | |
| 135 | * vt.c: |
| 136 | * pty.c: |
| 137 | * tty_ioctl.c: |
| 138 | * serial.c: Update routines to use the new 2.1 memory access |
| 139 | routines. |
| 140 | |
| 141 | Wed Dec 4 07:51:52 1996 Theodore Ts'o <tytso@localhost.mit.edu> |
| 142 | |
| 143 | * serial.c (change_speed): Use save_flags(); cli() and |
| 144 | restore_flags() in order to ensure we don't accidentally |
| 145 | turn on interrupts when starting up the port. |
| 146 | (startup): Move the insertion of serial structure into the |
| 147 | IRQ chain earlier into the startup processing. Interrupts |
| 148 | should be off this whole time, but we eventually will want |
| 149 | to reduce this window. |
| 150 | |
| 151 | Thu Nov 21 10:05:22 1996 Theodore Ts'o <tytso@localhost.mit.edu> |
| 152 | |
| 153 | * tty_ioctl.c (tty_wait_until_sent): Always check the driver |
| 154 | wait_until_ready routine, even if there are no characters |
| 155 | in the xmit buffer. (There may be charactes in the device |
| 156 | FIFO.) |
| 157 | (n_tty_ioctl): Add new flag tty->flow_stopped which |
| 158 | indicates whether the tty is stopped due to a request by |
| 159 | the TCXONC ioctl (used by tcflow). If so, don't let an |
| 160 | incoming XOFF character restart the tty. The tty can only |
| 161 | be restarted by another TCXONC request. |
| 162 | |
| 163 | * tty_io.c (start_tty): Don't allow the tty to be restarted if |
| 164 | tty->flow_stopped is true. |
| 165 | |
| 166 | * n_tty.c (n_tty_receive_char): If tty->flow_stopped is true, and |
| 167 | IXANY is set, don't eat a character trying to restart the |
| 168 | tty. |
| 169 | |
| 170 | * serial.c (startup): Remove need for MCR_noint from the |
| 171 | async_struct structure. Only turn on DTR and RTS if the |
| 172 | baud rate is not zero. |
| 173 | (change_speed): More accurately calculate the timeout |
| 174 | value based on the word size. Move responsibility of |
| 175 | hangup when speed becomes B0 to rs_set_termios() |
| 176 | (set_serial_info): When changing the UART type set the |
| 177 | current xmit_fifo_size as well as the permanent |
| 178 | xmit_fifo_size. |
| 179 | (rs_ioctl): Fix TCSBRK (used by tcdrain) and TCSBRKP |
| 180 | ioctls to return EINTR if interrupted by a signal. |
| 181 | (rs_set_termios): If the baud rate changes to or from B0, |
| 182 | this function is now responsible for setting or clearing |
| 183 | DTR and RTS. DTR and RTS are only be changed on the |
| 184 | transition to or from the B0 state. |
| 185 | (rs_close): Wait for the characters to drain based on |
| 186 | info->timeout. At low baud rates (50 bps), it may take a |
| 187 | long time for the FIFO to completely drain out! |
| 188 | (rs_wait_until_sent): Fixed timeout handling. Now |
| 189 | releases control to the scheduler, but checks frequently |
| 190 | enough so that the function is sensitive enough to pass |
| 191 | the timing requirements of the NIST-PCTS. |
| 192 | (block_til_ready): When opening the device, don't turn on |
| 193 | DTR and RTS if the baud rate is B0. |
| 194 | |
| 195 | Thu Nov 14 00:06:09 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 196 | |
| 197 | * serial.c (autoconfig): Fix autoconfiguration problems; |
| 198 | info->flags wasn't getting initialized from the state |
| 199 | structure. Put in more paranoid test for the 16750. |
| 200 | |
| 201 | Fri Nov 8 20:19:50 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 202 | |
| 203 | * n_tty.c (n_tty_flush_buffer): Only call driver->unthrottle() if |
| 204 | the tty was previous throttled. |
| 205 | (n_tty_set_termios, write_chan): Add changes suggested by |
| 206 | Simon P. Allen to allow hardware cooking. |
| 207 | |
| 208 | * tty_ioctl.c (set_termios): If we get a signal while waiting for |
| 209 | the tty to drain, return -EINTR. |
| 210 | |
| 211 | * serial.c (change_speed): Add support for CREAD, as required by |
| 212 | POSIX. |
| 213 | |
| 214 | Sat Nov 2 20:43:10 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 215 | |
| 216 | * serial.c: Wholesale changes. Added support for the Startech |
| 217 | 16650 and 16650V2 chips. (WARNING: the new startech |
| 218 | 16650A may or may not work!) Added support for the |
| 219 | TI16750 (not yet tested). Split async_struct into a |
| 220 | transient part (async_struct) and a permanent part |
| 221 | (serial_state) which contains the configuration |
| 222 | information for the ports. Added new driver routines |
| 223 | wait_until_sent() and send_xchar() to help with POSIX |
| 224 | compliance. Added support for radio clocks which waggle |
| 225 | the carrier detect line (CONFIG_HARD_PPS). |
| 226 | |
| 227 | * tty_ioctl.c (tty_wait_until_sent): Added call to new driver |
| 228 | function tty->driver.wait_until_sent(), which returns when |
| 229 | the tty's device xmit buffers are drained. Needed for |
| 230 | full POSIX compliance. |
| 231 | |
| 232 | (send_prio_char): New function, called by the ioctl's |
| 233 | TCIOFF and TCION; uses the new driver call send_xchar(), |
| 234 | which will send the XON or XOFF character at high priority |
| 235 | (and even if tty output is stopped). |
| 236 | |
| 237 | Wed Jun 5 18:52:04 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 238 | |
| 239 | * pty.c (pty_close): When closing a pty, make sure packet mode is |
| 240 | cleared. |
| 241 | |
| 242 | Sun May 26 09:33:52 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 243 | |
| 244 | * vesa_blank.c (set_vesa_blanking): Add missing verify_area() call. |
| 245 | |
| 246 | * selection.c (set_selection): Add missing verify_area() call. |
| 247 | |
| 248 | * tty_io.c (tty_ioctl): Add missing verify_area() calls. |
| 249 | |
| 250 | * serial.c (rs_ioctl): Add missing verify_area() calls. |
| 251 | (rs_init): Allow initialization of serial driver |
| 252 | configuration from a module. |
| 253 | |
| 254 | * random.c (extract_entropy): Add missing verify_area call. |
| 255 | Don't limit number of characters returned to |
| 256 | 32,768. Extract entropy is now no longer a inlined |
| 257 | function. |
| 258 | |
| 259 | (random_read): Check return value in case extract_entropy |
| 260 | returns an error. |
| 261 | |
| 262 | (secure_tcp_sequence_number): New function which returns a |
| 263 | secure TCP sequence number. This is needed to prevent some |
| 264 | nasty TCP hijacking attacks. |
| 265 | |
| 266 | (init_std_data): Initialize using gettimeofday() instead of |
| 267 | struct timeval xtime. |
| 268 | |
| 269 | (fast_add_entropy_word, add_entropy_word): Rename the |
| 270 | inline function add_entropy_word() to |
| 271 | fast_add_entropy_word(). Make add_entropy_word() be the |
| 272 | non-inlined function which is used in non-timing critical |
| 273 | places, in order to save space. |
| 274 | |
| 275 | (initialize_benchmark, begin_benchmark, end_benchmark): New |
| 276 | functions defined when RANDOM_BENCHMARK is defined. They |
| 277 | allow us to benchmark the speed of the |
| 278 | add_timer_randomness() call. |
| 279 | |
| 280 | (int_ln, rotate_left): Add two new inline functions with |
| 281 | i386 optimized asm instructions. This speeds up the |
| 282 | critical add_entropy_word() and add_timer_randomness() |
| 283 | functions, which are called from interrupt handlers. |
| 284 | |
| 285 | Tue May 7 22:51:11 1996 <tytso@rsts-11.mit.edu> |
| 286 | |
| 287 | * random.c (add_timer_randomness): Limit the amount randomness |
| 288 | that we estimate to 12 bits. (An arbitrary amount). |
| 289 | |
| 290 | (extract_entropy): To make it harder to analyze the hash |
| 291 | function, fold the hash function in half using XOR, and |
| 292 | use the folded result as the value to emit to the user. |
| 293 | Also, add timer randomness each pass through the |
| 294 | exact_entropy call, to increase the amount of unknown |
| 295 | values during the extraction process. |
| 296 | |
| 297 | (random_ioctl): Use IOR/IOW definitions to define the |
| 298 | ioctl values used by the /dev/random driver. Allow the |
| 299 | old ioctl values to be used for backwards compatibility |
| 300 | (for a limited amount of time). |
| 301 | |
| 302 | Wed Apr 24 14:02:04 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> |
| 303 | |
| 304 | * random.c (add_timer_randomness): Use 2nd derivative as well to |
| 305 | better estimate entropy. |
| 306 | |
| 307 | (rand_initialize): Explicitly initialize all the pointers |
| 308 | to NULL. (Clearing pointers using memset isn't portable.) |
| 309 | Initialize the random pool with OS-dependent data. |
| 310 | |
| 311 | (random_write): Add sanity checking to the arguments to |
| 312 | random_write(), so that bad arguments won't cause a kernel |
| 313 | SEGV. |
| 314 | |
| 315 | (random_read): Update the access time of the device inode |
| 316 | when you return data to the user. |
| 317 | |
| 318 | (random_ioctl): Wake up the random_wait channel when there |
| 319 | are only WAIT_INPUT_BITS available. Add more paranoia |
| 320 | checks to make sure entropy_count doesn't go beyond the |
| 321 | bounds of (0, POOLSIZE). Add a few missing verify_area |
| 322 | checks. Add support for the RNDCLEARPOOL ioctl, which |
| 323 | zaps the random pool. |
| 324 | |
| 325 | (add_timer_randomness): Wake up the random_wait |
| 326 | channel only when there are WAIT_INPUT_BITS available. |
| 327 | |
| 328 | (random_select): Allow a random refresh daemon process to |
| 329 | select on /dev/random for writing; wake up the daemon when |
| 330 | there are less than WAIT_OUTPUT_BITS bits of randomness |
| 331 | available. |
| 332 | |
| 333 | Tue Apr 23 22:56:07 1996 <tytso@rsts-11.mit.edu> |
| 334 | |
| 335 | * tty_io.c (init_dev): Change return code when user attempts to |
| 336 | open master pty which is already open from EAGAIN to EIO, |
| 337 | to match with BSD expectations. EIO is more correct |
| 338 | anyway, since EAGAIN implies that retrying will be |
| 339 | successful --- which it might be.... Eventually!! |
| 340 | |
| 341 | * pty.c (pty_open, pty_close): Fix wait loop so that we don't |
| 342 | busy loop while waiting for the master side to open. |
| 343 | Fix tty opening/closing logic. TTY_SLAVE_CLOSED was |
| 344 | renamed to TTY_OTHER_CLOSED, so that the name is more |
| 345 | descriptive. Also fixed code so that the tty flag |
| 346 | actually works correctly now.... |
| 347 | |
| 348 | Mon Apr 1 10:22:01 1996 <tytso@rsts-11.mit.edu> |
| 349 | |
| 350 | * serial.c (rs_close): Cleaned up modularization changes. |
| 351 | Remove code which forced line discipline back to N_TTY |
| 352 | this is done in the tty upper layers, and there's no |
| 353 | reason to do it here. (Making this change also |
| 354 | removed the requirement that the serial module access |
| 355 | the internal kernel symbol "ldiscs".) |
| 356 | |
| 357 | * tty_io.c (tty_init): Formally register a tty_driver entry for |
| 358 | /dev/tty (device 4, 0) and /dev/console (device 5, 0). |
| 359 | This guarantees that major device numbers 4 and 5 will be |
| 360 | reserved for the tty subsystem (as they have to be because |
| 361 | of /dev/tty and /dev/console). Removed tty_regdev, as |
| 362 | this interface is no longer necessary. |
| 363 | |
| 364 | Sun Mar 17 20:42:47 GMT 1996 <ah@doc.ic.ac.uk> |
| 365 | |
| 366 | * serial.c : modularisation (changes in linux/fs/device.c allow |
| 367 | kerneld to automatically load the serial module). |
| 368 | |
| 369 | * Makefile, Config.in : serial modularisation adds. |
| 370 | |
| 371 | * tty_io.c : tty_init_ctty used by to register "cua" driver just |
| 372 | for the /dev/tty device (5,0). Added tty_regdev. |
| 373 | |
| 374 | * serial.c (shutdown, rs_ioctl) : when port shuts down wakeup processes |
| 375 | waiting on delta_msr_wait. The TIOCMIWAIT ioctl returns EIO |
| 376 | if no change was done since the time of call. |
| 377 | |
| 378 | Sat Mar 16 14:33:13 1996 <aeb@cwi.nl> |
| 379 | |
| 380 | * tty_io.c (disassociate_ctty): If disassociate_ctty is called by |
| 381 | exit, do not perform an implicit vhangup on a pty. |
| 382 | |
| 383 | Fri Feb 9 14:15:47 1996 <tytso@rsts-11.mit.edu> |
| 384 | |
| 385 | * serial.c (block_til_ready): Fixed another race condition which |
| 386 | happens if a hangup happens during the open. |
| 387 | |
| 388 | Wed Jan 10 10:08:00 1996 <tytso@rsts-11.mit.edu> |
| 389 | |
| 390 | * serial.c (block_til_ready): Remove race condition which happened |
| 391 | if a hangup condition happened during the setup of the |
| 392 | UART, before rs_open() called block_til_ready(). This |
| 393 | caused the info->count counter to be erroneously |
| 394 | decremented. |
| 395 | |
| 396 | * serial.c (startup, rs_open): Remove race condition that could |
| 397 | cause a memory leak of one page. (Fortunately, both race |
| 398 | conditions were relatively rare in practice.) |
| 399 | |
| 400 | Tue Dec 5 13:21:27 1995 <tytso@rsts-11.mit.edu> |
| 401 | |
| 402 | * serial.c (check_modem_status, rs_ioctl): Support the new |
| 403 | ioctl()'s TIOCGICOUNT, TIOCMIWAIT. These allow an |
| 404 | application program to wait on a modem serial register |
| 405 | status bit change, and to find out how many changes have |
| 406 | taken place for the MSR bits. |
| 407 | |
| 408 | (rs_write): Eliminate a race condition which is introduced |
| 409 | if it is necessary to wait for the semaphore. |
| 410 | |
| 411 | Sat Nov 4 17:14:45 1995 <tytso@rsts-11.mit.edu> |
| 412 | |
| 413 | * tty_io.c (tty_init): Move registration of TTY_MAJOR and |
| 414 | TTY_AUX_MAJOR to the end, so that /proc/devices looks |
| 415 | prettier. |
| 416 | |
| 417 | * pty.c (pty_init): Use new major numbers for PTY master and slave |
| 418 | devices. This allow us to have more than 64 pty's. We |
| 419 | register the old pty devices for backwards compatibility. |
| 420 | Note that a system should either be using the old pty |
| 421 | devices or the new pty devices --- in general, it should |
| 422 | try to use both, since they map into the same pty table. |
| 423 | The old pty devices are strictly for backwards compatibility. |
| 424 | |
| 425 | Wed Oct 11 12:45:24 1995 <tytso@rsts-11.mit.edu> |
| 426 | |
| 427 | * tty_io.c (disassociate_ctty): If disassociate_ctty is called by |
| 428 | exit, perform an implicit vhangup on the tty. |
| 429 | |
| 430 | * pty.c (pty_close): When the master pty is closed, send a hangup |
| 431 | to the slave pty. |
| 432 | (pty_open): Use the flag TTY_SLAVE_CLOSED to test to see |
| 433 | if there are any open slave ptys, instead of using |
| 434 | tty->link->count. The old method got confused if there |
| 435 | were processes that had hung-up file descriptors on the |
| 436 | slave tty. |
| 437 | |
| 438 | Tue May 2 00:53:25 1995 <tytso@rsx-11.mit.edu> |
| 439 | |
| 440 | * tty_io.c (tty_set_ldisc): Wait until the output buffer is |
| 441 | drained before closing the old line discipline --- needed |
| 442 | in only one case: XON/XOFF processing. |
| 443 | |
| 444 | * n_tty.c (n_tty_close): Don't bother waiting until the output |
| 445 | driver is closed; in general, the line discipline |
| 446 | shouldn't care if the hardware is finished |
| 447 | transmitting before the line discipline terminates. |
| 448 | |
| 449 | * tty_io.c (release_dev): Shutdown the line discipline after |
| 450 | decrementing the tty count variable; but set the |
| 451 | TTY_CLOSING flag so that we know that this tty structure |
| 452 | isn't long for this world. |
| 453 | |
| 454 | * tty_io.c (init_dev): Add sanity code to check to see if |
| 455 | TTY_CLOSING is set on a tty structure; if so, something |
| 456 | bad has happened (probably a line discipline close blocked |
| 457 | when it shouldn't have; so do a kernel printk and then |
| 458 | return an error). |
| 459 | |
| 460 | Wed Apr 26 10:23:44 1995 Theodore Y. Ts'o <tytso@localhost> |
| 461 | |
| 462 | * tty_io.c (release_dev): Try to shutdown the line discipline |
| 463 | *before* decrementing the tty count variable; this removes |
| 464 | a potential race condition which occurs when the line |
| 465 | discipline close blocks, and another process then tries |
| 466 | open the same serial port. |
| 467 | |
| 468 | * serial.c (rs_hangup): When hanging up, flush the output buffer |
| 469 | before shutting down the UART. Otherwise the line |
| 470 | discipline close blocks waiting for the characters to get |
| 471 | flushed, which never happens until the serial port gets reused. |
| 472 | |
| 473 | Wed Apr 12 08:06:16 1995 Theodore Y. Ts'o <tytso@localhost> |
| 474 | |
| 475 | * serial.c (do_serial_hangup, do_softint, check_modem_status, |
| 476 | rs_init): Hangups are now scheduled via a separate tqueue |
| 477 | structure in the async_struct structure, tqueue_hangup. |
| 478 | This task is pushed on to the tq_schedule queue, so that |
| 479 | it is processed synchronously by the scheduler. |
| 480 | |
| 481 | Sat Feb 18 12:13:51 1995 Theodore Y. Ts'o (tytso@rt-11) |
| 482 | |
| 483 | * tty_io.c (disassociate_ctty, tty_open, tty_ioctl): Clear |
| 484 | current->tty_old_pgrp field when a session leader |
| 485 | acquires a controlling tty, and after a session leader |
| 486 | has disassociated from a controlling tty. |
| 487 | |
| 488 | Fri Feb 17 09:34:09 1995 Theodore Y. Ts'o (tytso@rt-11) |
| 489 | |
| 490 | * serial.c (rs_interrupt_single, rs_interrupt, rs_interrupt_multi): |
| 491 | Change the number of passes made from 64 to be 256, |
| 492 | configurable with the #define RS_ISR_PASS_LIMIT. |
| 493 | |
| 494 | * serial.c (rs_init, set_serial_info, get_serial_info, rs_close): |
| 495 | Remove support for closing_wait2. Instead, set |
| 496 | tty->closing and rely on the line discipline to prevent |
| 497 | echo wars. |
| 498 | |
| 499 | * n_tty.c (n_tty_receive_char): IEXTEN does not need to be |
| 500 | enabled in order for IXANY to be active. |
| 501 | |
| 502 | If tty->closing is set, then only process XON and XOFF |
| 503 | characters. |
| 504 | |
| 505 | Sun Feb 12 23:57:48 1995 Theodore Y. Ts'o (tytso@rt-11) |
| 506 | |
| 507 | * serial.c (rs_timer): Change the interrupt poll time from 60 |
| 508 | seconds to 10 seconds, configurable with the #define |
| 509 | RS_STROBE_TIME. |
| 510 | |
| 511 | * serial.c (rs_interrupt_multi, startup, shutdown, rs_ioctl, |
| 512 | set_multiport_struct, get_multiport_struct): Add |
| 513 | provisions for a new type of interrupt service routine, |
| 514 | which better supports multiple serial ports on a single |
| 515 | IRQ. |
| 516 | |
| 517 | Sun Feb 5 19:35:11 1995 Theodore Y. Ts'o (tytso@rt-11) |
| 518 | |
| 519 | * tty_ioctl.c (n_tty_ioctl, set_termios, tty_wait_until_sent): |
| 520 | * serial.c (rs_ioctl, rs_close): |
| 521 | * cyclades.c (cy_ioctl, cy_close): |
| 522 | * n_tty.c (n_tty_close): Rename wait_until_sent to |
| 523 | tty_wait_until_sent, so that it's a better name to export |
| 524 | in ksyms.c. |
| 525 | |
| 526 | Sat Feb 4 23:36:20 1995 Theodore Y. Ts'o (tytso@rt-11) |
| 527 | |
| 528 | * serial.c (rs_close): Added missing check for closing_wait2 being |
| 529 | ASYNC_CLOSING_WAIT_NONE. |
| 530 | |
| 531 | Thu Jan 26 09:02:49 1995 Theodore Y. Ts'o (tytso@rt-11) |
| 532 | |
| 533 | * serial.c (rs_init, set_serial_info, get_serial_info, |
| 534 | rs_close): Support close_wait in the serial driver. |
| 535 | This is helpful for slow devices (like serial |
| 536 | plotters) so that their outputs don't get flushed upon |
| 537 | device close. This has to be configurable because |
| 538 | normally we don't want ports to be hung up for long |
| 539 | periods of time during a close when they are not |
| 540 | connected to a device, or the device is powered off. |
| 541 | |
| 542 | The default is to wait 30 seconds; in the case of a |
| 543 | very slow device, the close_wait timeout should be |
| 544 | lengthened. If it is set to 0, the kernel will wait |
| 545 | forever for all of the data to be transmitted. |
| 546 | |
| 547 | Thu Jan 17 01:17:20 1995 Theodore Y. Ts'o (tytso@rt-11) |
| 548 | |
| 549 | * serial.c (startup, change_speed, rs_init): Add support to detect |
| 550 | the StarTech 16650 chip. Treat it as a 16450 for now, |
| 551 | because of its FIFO bugs. |
| 552 | |
| 553 | Thu Jan 5 21:21:57 1995 <dahinds@users.sourceforge.net> |
| 554 | |
| 555 | * serial.c: (receive_char): Added counter to prevent infinite loop |
| 556 | when a PCMCIA serial device is ejected. |
| 557 | |
| 558 | Thu Dec 29 17:53:48 1994 <tytso@rsx-11.mit.edu> |
| 559 | |
| 560 | * tty_io.c (check_tty_count): New procedure which checks |
| 561 | tty->count to make sure that it matches with the number of |
| 562 | open file descriptors which point at the structure. If |
| 563 | the number doesn't match, it prints a warning message. |
| 564 | |
| 565 | Wed Dec 28 15:41:51 1994 <tytso@rsx-11.mit.edu> |
| 566 | |
| 567 | * tty_io.c (do_tty_hangup, disassociate_ctty): At hangup time, |
| 568 | save the tty's current foreground process group in the |
| 569 | session leader's task structure. When the session leader |
| 570 | terminates, send a SIGHUP, SIGCONT to that process group. |
| 571 | This is not required by POSIX, but it's not prohibited |
| 572 | either, and it appears to be the least intrusive way |
| 573 | to fix a problem that dialup servers have with |
| 574 | orphaned process groups caused by modem hangups. |
| 575 | |
| 576 | Thu Dec 8 14:52:11 1994 <tytso@rsx-11.mit.edu> |
| 577 | |
| 578 | * serial.c (rs_ioctl): Don't allow most ioctl's if the serial port |
| 579 | isn't initialized. |
| 580 | |
| 581 | * serial.c (rs_close): Don't clear the IER if the serial port |
| 582 | isn't initialized. |
| 583 | |
| 584 | * serial.c (block_til_ready): Don't try to block on the dialin |
| 585 | port if the serial port isn't initialized. |
| 586 | |
| 587 | Wed Dec 7 10:48:30 1994 Si Park (si@wimpol.demon.co.uk) |
| 588 | * tty_io.c (tty_register_driver): Fix bug when linking onto |
| 589 | the tty_drivers list. We now test that there are elements |
| 590 | already on the list before setting the back link from the |
| 591 | first element to the new driver. |
| 592 | |
| 593 | * tty_io.c (tty_unregister_driver): Fix bug in unlinking the |
| 594 | specified driver from the tty_drivers list. We were not |
| 595 | setting the back link correctly. This used to result in |
| 596 | a dangling back link pointer and cause panics on the next |
| 597 | call to get_tty_driver(). |
| 598 | |
| 599 | Tue Nov 29 10:21:09 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 600 | |
| 601 | * tty_io.c (tty_unregister_driver): Fix bug in |
| 602 | tty_unregister_driver where the pointer to the refcount is |
| 603 | tested, instead of the refcount itself. This caused |
| 604 | tty_unregister_driver to always return EBUSY. |
| 605 | |
| 606 | Sat Nov 26 11:59:24 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 607 | |
| 608 | * tty_io.c (tty_ioctl): Add support for the new ioctl |
| 609 | TIOCTTYGSTRUCT, which allow a kernel debugging program |
| 610 | direct read access to the tty and tty_driver structures. |
| 611 | |
| 612 | Fri Nov 25 17:26:22 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 613 | |
| 614 | * serial.c (rs_set_termios): Don't wake up processes blocked in |
| 615 | open when the CLOCAL flag changes, since a blocking |
| 616 | open only samples the CLOCAL flag once when it blocks, |
| 617 | and doesn't check it again. (n.b. FreeBSD has a |
| 618 | different behavior for blocking opens; it's not clear |
| 619 | whether Linux or FreeBSD's interpretation is correct. |
| 620 | POSIX doesn't give clear guidance on this issue, so |
| 621 | this may change in the future....) |
| 622 | |
| 623 | * serial.c (block_til_ready): Use the correct termios structure to |
| 624 | check the CLOCAL flag. If the cuaXX device is active, |
| 625 | then check the saved termios for the ttySXX device. |
| 626 | Otherwise, use the currently active termios structure. |
| 627 | |
| 628 | Sun Nov 6 21:05:44 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 629 | |
| 630 | * serial.c (change_speed): Add support for direct access of |
| 631 | 57,600 and 115,200 bps. |
| 632 | |
| 633 | Wed Nov 2 10:32:36 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 634 | |
| 635 | * n_tty.c (n_tty_receive_room): Only allow excess characters |
| 636 | through if we are in ICANON mode *and* there are other no |
| 637 | pending lines in the buffer. Otherwise cut and paste over |
| 638 | 4k breaks. |
| 639 | |
| 640 | Sat Oct 29 18:17:34 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 641 | |
| 642 | * serial.c (rs_ioctl, get_lsr_info): Added patch suggested by Arne |
| 643 | Riiber so that user mode programs can tell when the |
| 644 | transmitter shift register is empty. |
| 645 | |
| 646 | Thu Oct 27 23:14:29 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 647 | |
| 648 | * tty_ioctl.c (wait_until_sent): Added debugging printk statements |
| 649 | (under the #ifdef TTY_DEBUG_WAIT_UNTIL_SENT) |
| 650 | |
| 651 | * serial.c (rs_interrupt, rs_interrupt_single, receive_chars, |
| 652 | change_speed, rs_close): rs_close now disables receiver |
| 653 | interrupts when closing the serial port. This allows the |
| 654 | serial port to close quickly when Linux and a modem (or a |
| 655 | mouse) are engaged in an echo war; when closing the serial |
| 656 | port, we now first stop listening to incoming characters, |
| 657 | and *then* wait for the transmit buffer to drain. |
| 658 | |
| 659 | In order to make this change, the info->read_status_mask |
| 660 | is now used to control what bits of the line status |
| 661 | register are looked at in the interrupt routine in all |
| 662 | cases; previously it was only used in receive_chars to |
| 663 | select a few of the status bits. |
| 664 | |
| 665 | Mon Oct 24 23:36:21 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 666 | |
| 667 | * serial.c (rs_close): Add a timeout to the transmitter flush |
| 668 | loop; this is just a sanity check in case we have flaky |
| 669 | (or non-existent-but-configured-by-the-user) hardware. |
| 670 | |
| 671 | Fri Oct 21 09:37:23 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 672 | |
| 673 | * tty_io.c (tty_fasync): When asynchronous I/O is enabled, if the |
| 674 | process or process group has not be specified yet, set it |
| 675 | to be the tty's process group, or if that is not yet set, |
| 676 | to the current process's pid. |
| 677 | |
| 678 | Thu Oct 20 23:17:28 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 679 | |
| 680 | * n_tty.c (n_tty_receive_room): If we are doing input |
| 681 | canonicalization, let as many characters through as |
| 682 | possible, so that the excess characters can be "beeped". |
| 683 | |
| 684 | Tue Oct 18 10:02:43 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 685 | |
| 686 | * serial.c (rs_start): Removed an incorrect '!' that was |
| 687 | preventing transmit interrupts from being re-enabled in |
| 688 | rs_start(). Fortunately in most cases it would be |
| 689 | re-enabled elsewhere, but this still should be fixed |
| 690 | correctly. |
| 691 | |
| 692 | Sun Oct 9 23:46:03 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 693 | |
| 694 | * tty_io.c (do_tty_hangup): If the tty driver flags |
| 695 | TTY_DRIVER_RESET_TERMIOS is set, then reset the termios |
| 696 | settings back to the driver's initial configuration. This |
| 697 | allows the termios settings to be reset even if a process |
| 698 | has hung up file descriptors keeping a pty's termios from |
| 699 | being freed and reset. |
| 700 | |
| 701 | * tty_io.c (release_dev): Fix memory leak. The pty's other |
| 702 | termios structure should also be freed. |
| 703 | |
| 704 | * serial.c (rs_close, shutdown): Change how we wait for the |
| 705 | transmitter to completely drain before shutting down the |
| 706 | serial port. We now do it by scheduling in another |
| 707 | process instead of busy looping with the interrupts turned |
| 708 | on. This may eliminate some race condition problems that |
| 709 | some people seem to be reporting. |
| 710 | |
| 711 | Sun Sep 25 14:18:14 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 712 | |
| 713 | * tty_io.c (release_dev): When freeing a tty make sure that both |
| 714 | the tty and the o_tty (if present) aren't a process's |
| 715 | controlling tty. (Previously, we only checked the tty.) |
| 716 | |
| 717 | * serial.c (change_speed): Only enable the Modem Status |
| 718 | Interrupt for a port if CLOCAL is not set or CRTSCTS |
| 719 | is set. If we're not checking the carrier detect and |
| 720 | CTS line, there's no point in enabling the modem |
| 721 | status interrupt. This will save spurious interrupts |
| 722 | from slowing down systems who have terminals that |
| 723 | don't support either line. (Of course, if you want |
| 724 | only one of CD and CTS support, you will need a |
| 725 | properly wired serial cable.) |
| 726 | |
| 727 | Thu Sep 22 08:32:48 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 728 | |
| 729 | * tty_io.c (do_SAK): Return if tty is null. |
| 730 | |
| 731 | * tty_io.c (_tty_name): Return "NULL tty" if the passed in tty is |
| 732 | NULL. |
| 733 | |
| 734 | Sat Sep 17 13:19:25 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 735 | |
| 736 | * tty_ioctl.c (n_tty_ioctl): Fix TIOCGLCKTRMIOS and |
| 737 | TIOCSLCKTRMIOS, which were totally broken. Remove |
| 738 | extra indirection from argument; it should be a struct |
| 739 | termios *, not a struct termios **. |
| 740 | &real_tty->termios_locked should have been |
| 741 | real_tty->termios_locked. This caused us to be |
| 742 | reading and writing the termios_locked structure to |
| 743 | random places in kernel memory. |
| 744 | |
| 745 | * tty_io.c (release_dev): Oops! Forgot to delete a critical kfree |
| 746 | of the locked_termios. This leaves the locked_termios |
| 747 | structure pointed at a freed object. |
| 748 | |
| 749 | Fri Sep 16 08:13:25 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 750 | |
| 751 | * tty_io.c (tty_open): Don't check for an exclusive open until |
| 752 | after the device specific open routine has been called. |
| 753 | Otherwise, the serial device ref counting will be screwed |
| 754 | up. |
| 755 | |
| 756 | * serial.c (rs_open, block_til_ready): Don't set termios structure |
| 757 | until after block_til_ready has returned successfully. |
| 758 | Modify block_til_ready to check the normal_termios |
| 759 | structure directly, so it doesn't rely on termios being |
| 760 | set before it's called. |
| 761 | |
| 762 | Thu Sep 15 23:34:01 1994 Theodore Y. Ts'o (tytso@rt-11) |
| 763 | |
| 764 | * serial.c (rs_close): Turn off interrupts during rs_close() to |
| 765 | prevent a race condition with the hangup code (which |
| 766 | runs during a software interrupt). |
| 767 | |
| 768 | * tty_io.c (release_dev): Don't free the locked_termios structure; |
| 769 | its state must be retained across device opens. |
| 770 | |
| 771 | |
| 772 | * tty_io.c (tty_unregister_driver): Added function to unregister a |
| 773 | tty driver. (For loadable device drivers.) |
| 774 | |
| 775 | |