lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sun, 4 May 2008 23:27:24 +0800 From: "Bryan Wu" <cooloney@...nel.org> To: "Alan Cox" <alan@...rguk.ukuu.org.uk> Cc: "Yang, Graf" <Graf.Yang@...log.com>, "Linux Kernel Mailing List" <linux-kernel@...r.kernel.org> Subject: Re: Blackfin Serial Driver: Enable IR function when user application (irattach /dev/ttyBFx -s) call TIOCSETD ioctl with line discipline N_IRDA On Fri, Apr 25, 2008 at 5:55 PM, Alan Cox <alan@...rguk.ukuu.org.uk> wrote: > > Blackfin serial driver register as a UART driver, which will call tty_set_operations(...,&uart_ops), while uart_ops hasn't set_ldisc function. > > Do you mean I should declare a tty_ops and call tty_set_operations(..., &tty_ops) in bfin_5xx.c to register my set_ldisc? > > Then we need to add a set_ldisc to uart_ops. I'll do that in todays > hacking. > Oh, I got the compile failure now: -- CC drivers/serial/bfin_5xx.o drivers/serial/bfin_5xx.c: In function 'bfin_serial_init': drivers/serial/bfin_5xx.c:1281: error: 'struct tty_driver' has no member named 'set_ldisc' make[2]: *** [drivers/serial/bfin_5xx.o] Error 1 make[1]: *** [drivers/serial] Error 2 make: *** [drivers] Error 2 -- Obviously, it is no way to change code like this for passing compiling: -- - bfin_serial_reg.tty_driver->set_ldisc = bfin_set_ldisc; + bfin_serial_reg.tty_driver->ops->set_ldisc = bfin_set_ldisc; -- Because the ops uart_ops is const and does not include the set_ldisc. IMO, adding set_ldisc to uart_ops is useless for Graf's IrDA request, because this function is specific for Blackfin, not shared by other UART drivers. Maybe the only way is to create a new tty_operations named bfin_uart_ops based on uart_ops like below: -- static const struct tty_operations bfin_uart_ops = { .open = uart_open, .close = uart_close, .write = uart_write, .put_char = uart_put_char, .flush_chars = uart_flush_chars, .write_room = uart_write_room, .chars_in_buffer= uart_chars_in_buffer, .flush_buffer = uart_flush_buffer, .ioctl = uart_ioctl, .throttle = uart_throttle, .unthrottle = uart_unthrottle, .send_xchar = uart_send_xchar, .set_termios = uart_set_termios, .stop = uart_stop, .start = uart_start, .hangup = uart_hangup, .break_ctl = uart_break_ctl, .wait_until_sent= uart_wait_until_sent, #ifdef CONFIG_PROC_FS .read_proc = uart_read_proc, #endif .tiocmget = uart_tiocmget, .tiocmset = uart_tiocmset, #ifdef CONFIG_CONSOLE_POLL .poll_init = uart_poll_init, .poll_get_char = uart_poll_get_char, .poll_put_char = uart_poll_put_char, #endif .set_ldisc = bfin_set_ldisc, }; -- But it looks like funny as copying a whole structure for just one simple function member assignment. Alan, do you have any other suggestion for this issue? maybe we can remove 'const' from struct tty_operations, then we can simply set the set_ldisc for bfin_set_ldisc on the fly. Thanks a lot -Bryan Wu -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists