Messages in this thread | | | Subject | Re: The Serial Layer | From | Alan Cox <> | Date | Thu, 09 Sep 2004 17:28:46 +0100 |
| |
On Iau, 2004-09-09 at 13:57, Theodore Ts'o wrote: > Calling ldisc.receive_buf directly() should be OK as long as you're > not in an interrupt handler. (For example the comtrol driver polls in > a timer bottom-half, so it's OK to call ldisc.receive_buf). > Unfortunately, some drivers don't quite follow the rules.
If the driver calls ldisc->receive_buf it means it bypasses the TTY_DONT_FLIP locking used by the n_tty driver. Am I missing something here.
> The hangup handling needs to be completely redone, so that we don't > force serial drivers to do a completely shutdown of the port in an > interrupt context. If the drivers are careful, it can be safe, but > it's too hard to handle hangup correctly.
Most of that I think comes out in the wash with the ldisc locking. Once the driver uses tty_ldisc_ref() it'll get NULL back in the case where the hangup raced the driver. I'm also no longer dropping back to N_TTY in the hangup path. I couldn't see any reason this was neccessary since the release will clean it up anyway ?
Alan
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |