Re: [PATCH] synclink_gt use dynamic tty device registration
On Thu, 2007-05-03 at 00:05 -0700, Andrew Morton wrote: > On Wed, 02 May 2007 11:17:33 -0500 Paul Fulghum <[EMAIL PROTECTED]> wrote: > > > Change synclink_gt driver to use dynamic tty device registration. > > > > ... > > > > + for (i=0; i < port_count; ++i) > > + tty_register_device(serial_driver, port_array[i]->line, > > &(port_array[i]->pdev->dev)); > > ... > > + for (info=slgt_device_list ; info != NULL ; > > info=info->next_device) > > + tty_unregister_device(serial_driver, info->line); > > ... > > + if ((rc = pci_register_driver(_driver)) < 0) { > > hm, not a big fan of kernel coding style, I see. It varies. If this idiom bothers you, I can split it into 2 lines. > What's going to happen here if tty_register_device() fails? Then the device will not be accessible as a tty device. It may still be accessible as a network device. On driver unload, tty_unregister_device() does nothing because the device was never created. In this case, tracking the return value does not change anything. I could add a printk on error to better inform the user that the kernel's plumbing went south. -- Paul Fulghum Microgate Systems, Ltd - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] synclink_gt use dynamic tty device registration
On Wed, 02 May 2007 11:17:33 -0500 Paul Fulghum <[EMAIL PROTECTED]> wrote: > Change synclink_gt driver to use dynamic tty device registration. > > ... > > + for (i=0; i < port_count; ++i) > + tty_register_device(serial_driver, port_array[i]->line, > &(port_array[i]->pdev->dev)); > ... > + for (info=slgt_device_list ; info != NULL ; > info=info->next_device) > + tty_unregister_device(serial_driver, info->line); > ... > + if ((rc = pci_register_driver(_driver)) < 0) { hm, not a big fan of kernel coding style, I see. What's going to happen here if tty_register_device() fails? - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] synclink_gt use dynamic tty device registration
On Wed, 02 May 2007 11:17:33 -0500 Paul Fulghum [EMAIL PROTECTED] wrote: Change synclink_gt driver to use dynamic tty device registration. ... + for (i=0; i port_count; ++i) + tty_register_device(serial_driver, port_array[i]-line, (port_array[i]-pdev-dev)); ... + for (info=slgt_device_list ; info != NULL ; info=info-next_device) + tty_unregister_device(serial_driver, info-line); ... + if ((rc = pci_register_driver(pci_driver)) 0) { hm, not a big fan of kernel coding style, I see. What's going to happen here if tty_register_device() fails? - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] synclink_gt use dynamic tty device registration
On Thu, 2007-05-03 at 00:05 -0700, Andrew Morton wrote: On Wed, 02 May 2007 11:17:33 -0500 Paul Fulghum [EMAIL PROTECTED] wrote: Change synclink_gt driver to use dynamic tty device registration. ... + for (i=0; i port_count; ++i) + tty_register_device(serial_driver, port_array[i]-line, (port_array[i]-pdev-dev)); ... + for (info=slgt_device_list ; info != NULL ; info=info-next_device) + tty_unregister_device(serial_driver, info-line); ... + if ((rc = pci_register_driver(pci_driver)) 0) { hm, not a big fan of kernel coding style, I see. It varies. If this idiom bothers you, I can split it into 2 lines. What's going to happen here if tty_register_device() fails? Then the device will not be accessible as a tty device. It may still be accessible as a network device. On driver unload, tty_unregister_device() does nothing because the device was never created. In this case, tracking the return value does not change anything. I could add a printk on error to better inform the user that the kernel's plumbing went south. -- Paul Fulghum Microgate Systems, Ltd - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] synclink_gt use dynamic tty device registration
Change synclink_gt driver to use dynamic tty device registration. Signed-off-by: Paul Fulghum <[EMAIL PROTECTED]> --- a/drivers/char/synclink_gt.c2007-04-25 22:08:32.0 -0500 +++ b/drivers/char/synclink_gt.c2007-05-02 11:11:34.0 -0500 @@ -3415,6 +3415,9 @@ static void device_init(int adapter_num, } } } + + for (i=0; i < port_count; ++i) + tty_register_device(serial_driver, port_array[i]->line, &(port_array[i]->pdev->dev)); } static int __devinit init_one(struct pci_dev *dev, @@ -3466,6 +3469,8 @@ static void slgt_cleanup(void) printk("unload %s %s\n", driver_name, driver_version); if (serial_driver) { + for (info=slgt_device_list ; info != NULL ; info=info->next_device) + tty_unregister_device(serial_driver, info->line); if ((rc = tty_unregister_driver(serial_driver))) DBGERR(("tty_unregister_driver error=%d\n", rc)); put_tty_driver(serial_driver); @@ -3506,23 +3511,10 @@ static int __init slgt_init(void) printk("%s %s\n", driver_name, driver_version); - slgt_device_count = 0; - if ((rc = pci_register_driver(_driver)) < 0) { - printk("%s pci_register_driver error=%d\n", driver_name, rc); - return rc; - } - pci_registered = 1; - - if (!slgt_device_list) { - printk("%s no devices found\n",driver_name); - pci_unregister_driver(_driver); - return -ENODEV; - } - serial_driver = alloc_tty_driver(MAX_DEVICES); if (!serial_driver) { - rc = -ENOMEM; - goto error; + printk("%s can't allocate tty driver\n", driver_name); + return -ENOMEM; } /* Initialize the tty_driver structure */ @@ -3539,7 +3531,7 @@ static int __init slgt_init(void) B9600 | CS8 | CREAD | HUPCL | CLOCAL; serial_driver->init_termios.c_ispeed = 9600; serial_driver->init_termios.c_ospeed = 9600; - serial_driver->flags = TTY_DRIVER_REAL_RAW; + serial_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV; tty_set_operations(serial_driver, ); if ((rc = tty_register_driver(serial_driver)) < 0) { DBGERR(("%s can't register serial driver\n", driver_name)); @@ -3552,6 +3544,16 @@ static int __init slgt_init(void) driver_name, driver_version, serial_driver->major); + slgt_device_count = 0; + if ((rc = pci_register_driver(_driver)) < 0) { + printk("%s pci_register_driver error=%d\n", driver_name, rc); + goto error; + } + pci_registered = 1; + + if (!slgt_device_list) + printk("%s no devices found\n",driver_name); + return 0; error: - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] synclink_gt use dynamic tty device registration
Change synclink_gt driver to use dynamic tty device registration. Signed-off-by: Paul Fulghum [EMAIL PROTECTED] --- a/drivers/char/synclink_gt.c2007-04-25 22:08:32.0 -0500 +++ b/drivers/char/synclink_gt.c2007-05-02 11:11:34.0 -0500 @@ -3415,6 +3415,9 @@ static void device_init(int adapter_num, } } } + + for (i=0; i port_count; ++i) + tty_register_device(serial_driver, port_array[i]-line, (port_array[i]-pdev-dev)); } static int __devinit init_one(struct pci_dev *dev, @@ -3466,6 +3469,8 @@ static void slgt_cleanup(void) printk(unload %s %s\n, driver_name, driver_version); if (serial_driver) { + for (info=slgt_device_list ; info != NULL ; info=info-next_device) + tty_unregister_device(serial_driver, info-line); if ((rc = tty_unregister_driver(serial_driver))) DBGERR((tty_unregister_driver error=%d\n, rc)); put_tty_driver(serial_driver); @@ -3506,23 +3511,10 @@ static int __init slgt_init(void) printk(%s %s\n, driver_name, driver_version); - slgt_device_count = 0; - if ((rc = pci_register_driver(pci_driver)) 0) { - printk(%s pci_register_driver error=%d\n, driver_name, rc); - return rc; - } - pci_registered = 1; - - if (!slgt_device_list) { - printk(%s no devices found\n,driver_name); - pci_unregister_driver(pci_driver); - return -ENODEV; - } - serial_driver = alloc_tty_driver(MAX_DEVICES); if (!serial_driver) { - rc = -ENOMEM; - goto error; + printk(%s can't allocate tty driver\n, driver_name); + return -ENOMEM; } /* Initialize the tty_driver structure */ @@ -3539,7 +3531,7 @@ static int __init slgt_init(void) B9600 | CS8 | CREAD | HUPCL | CLOCAL; serial_driver-init_termios.c_ispeed = 9600; serial_driver-init_termios.c_ospeed = 9600; - serial_driver-flags = TTY_DRIVER_REAL_RAW; + serial_driver-flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV; tty_set_operations(serial_driver, ops); if ((rc = tty_register_driver(serial_driver)) 0) { DBGERR((%s can't register serial driver\n, driver_name)); @@ -3552,6 +3544,16 @@ static int __init slgt_init(void) driver_name, driver_version, serial_driver-major); + slgt_device_count = 0; + if ((rc = pci_register_driver(pci_driver)) 0) { + printk(%s pci_register_driver error=%d\n, driver_name, rc); + goto error; + } + pci_registered = 1; + + if (!slgt_device_list) + printk(%s no devices found\n,driver_name); + return 0; error: - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/