Re: [PATCH] tty: Add EXTPROC support for LINEMODE

From: Howard Chu
Date: Thu Jun 17 2010 - 19:43:15 EST


Howard Chu wrote:
Alan Cox wrote:
For Alpha this value should match OSF if possible.

OSF didn't define this flag, nor did it assign that particular bit to any
purpose. Is that good enough?

Fine

Are you suggesting that this is completely unfixable/unworkable? Would it be
sufficient to use kernel_termios_to_user_termios() ?

I don't see a way to fix it sanely


Actually using kernel_termios_to_user_termios_1(). In all supported
architectures this structure is basically aligned with but smaller than the
userland struct termios.

The relationship isn't quite so simple and it may change in the future,
so this seems to be a very bad idea. Besides which syscalls are *cheap*
so simply notifying someone to reread the terminal data they care about
should be fine. In that sense it seems SVR4 got it right.

OK. I'm fine with only setting a bit in the packet header, and letting the
application do an ioctl/tcgetattr to discover the actual state.

Just deleting that part of the patch was simple enough. The TIOCPKT_IOCTL bit still gets set in the packet header byte; userspace apps will just have to do an ioctl to retrieve the state when the bit is set.

I've also added locking to the pty_signal() function. The check for tty->link
seems a bit paranoid, but a few other functions do it as well.

/* Send a signal to the slave */
static int pty_signal(struct tty_struct *tty, int sig)
{
unsigned long flags;
struct pid *pgrp;

if (tty->link) {
spin_lock_irqsave(&tty->link->ctrl_lock, flags);
pgrp = get_pid(tty->link->pgrp);
spin_unlock_irqrestore(&tty->link->ctrl_lock, flags);

kill_pgrp(pgrp, sig, 1);
put_pid(pgrp);
}
return 0;
}

That covers all the feedback so far. I'll be reposting the entire patch again shortly, unless you have any additional thoughts.

--
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/