ChangeLog 30 KB

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