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@xxxxxxxxxxxx> 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 > _______________________________________________ Speakup mailing list Speakup@xxxxxxxxxxxxxxxxx http://linux-speakup.org/cgi-bin/mailman/listinfo/speakup