Line discipline

Okash Khawaja okash.khawaja at gmail.com
Sun Nov 27 15:41:50 EST 2016


Hi,

Thanks for explanation. I have not been able to work on this recently -
pulled away for something urgent. As soon as it's over, I'll be back on it.
Probably third week of December.


Cheers,
Okash

On Wed, Nov 23, 2016 at 2:56 PM, Samuel Thibault <
samuel.thibault at ens-lyon.org> wrote:

> Okash Khawaja, on Wed 23 Nov 2016 14:46:59 +0000, wrote:
> > So I have a simple kernel module that registers a new ldisc. When
> userspace
> > attaches that ldisc to /dev/ttyS0, the kernel module is able to write to
> that
> > serial port using tty->ops->write().
>
> Ok, good for a start :)
>
> > Currently I'm investigating the core problem of opening /dev/ttyS0 from
> kernel
> > space and attaching our ldisc to it. Are there any existing ideas around
> this?
>
> What I wrote before:
>
>> how can speakup open
> the port?  We don't have a process context or /dev/, so we can't just
> use sys_open and alike.  What we could use is some function which takes
> a minor/major pair or a device name, and returns a filp, then we can
> tty_set_ldisc(N_SPEAKUP) on file_tty(filp), but I don't know if such
> thing exists?  That would probably be building a struct inode (getting
> inspired from fs/ramfs/), then just open it? Something like:
>
> struct inode *inode = new_inode(sb);
>
> init_special_inode(inode, S_IFCHR, MKDEV(major, minor));
> filp = get_empty_filp();
> do_dentry_open(filp, inode, NULL, NULL);
> struct tty_struct *tty = file_tty(filp);
> tty_set_ldisc(tty, N_SPEAKUP);
>>
> > Is this worth investigating: to find correct tty without opening
> /dev/ttyS0 and
> > assigning our ldisc to it.
>
> > Realistically, how early in boot process do we want the ldisc
> > assigned?
>
> As early as possible :)
>
> That'll mean after tty initialization and after serial driver
> initialization
>
> Samuel
>


More information about the Speakup mailing list