Messages in this thread Patch in this message | | | Date | Tue, 08 Jan 2002 10:47:56 -0800 | From | Ivan Passos <> | Subject | Re: Serial Driver Name Question (kernels 2.4.x) |
| |
Andrew Morton wrote: > > Richard, can we please get this wrapped up? > > My preferred approach is to change the driver naming scheme > so that we don't have to put printf control-strings everywhere. > We can remove a number of ifdefs that way. > > So for serial.c: > > --- linux-2.4.18-pre2/drivers/char/tty_io.c Mon Jan 7 16:48:02 2002 > +++ linux-akpm/drivers/char/tty_io.c Mon Jan 7 20:56:38 2002 > @@ -193,10 +193,13 @@ _tty_make_name(struct tty_struct *tty, c > > if (!tty) /* Hmm. NULL pointer. That's fun. */ > strcpy(buf, "NULL tty"); > - else > - sprintf(buf, name, > - idx + tty->driver.name_base); > - > + else { > +#ifdef CONFIG_DEVFS_FS > + sprintf(buf, "%s/%d", name, idx + tty->driver.name_base); > +#else > + sprintf(buf, "%s%d", name, idx + tty->driver.name_base); > +#endif > + } > return buf; > } > > --- linux-2.4.18-pre2/drivers/char/serial.c Mon Jan 7 16:48:02 2002 > +++ linux-akpm/drivers/char/serial.c Mon Jan 7 20:58:09 2002 > @@ -5387,7 +5387,7 @@ static int __init rs_init(void) > serial_driver.driver_name = "serial"; > #endif > #if (LINUX_VERSION_CODE > 0x2032D && defined(CONFIG_DEVFS_FS)) > - serial_driver.name = "tts/%d"; > + serial_driver.name = "tts"; > #else > serial_driver.name = "ttyS"; > #endif
This doesn't cover all the drivers, because the definition for devfs is that the standard serial "translates" 'ttyS' to 'tts/', and other serial drivers "translate" 'ttyN' (where 'N' can be several different letters -- e.g. 'C' for Cyclades, 'R' for Comtrol, 'X' for Specialix, 'D' for Digi, etc.) to 'tts/N' (so that standard serial and other serial devices can share the same devfs directory).
So, I believe the best way to solve this would be:
drivers/char/tty_io.c: @@ -193,10 +193,13 @@ _tty_make_name(struct tty_struct *tty, c
if (!tty) /* Hmm. NULL pointer. That's fun. */ strcpy(buf, "NULL tty"); else - sprintf(buf, name, - idx + tty->driver.name_base); + sprintf(buf, "%s%d", name, idx + tty->driver.name_base); return buf; }
drivers/char/serial.c: @@ -5387,7 +5387,7 @@ static int __init rs_init(void) serial_driver.driver_name = "serial"; #endif #if (LINUX_VERSION_CODE > 0x2032D && defined(CONFIG_DEVFS_FS)) - serial_driver.name = "tts/%d"; + serial_driver.name = "tts/"; #else serial_driver.name = "ttyS"; #endif
And then, for instance, for the Cyclades driver, we'd use:
#ifdef CONFIG_DEVFS_FS cy_serial_driver.name = "tts/C"; #else cy_serial_driver.name = "ttyC"; #endif
, and let's not forget the callout devices (which follow a similar rule):
#ifdef CONFIG_DEVFS_FS cy_callout_driver.name = "cua/C"; #else cy_callout_driver.name = "cub"; #endif
This would apply for other drivers as well, just replacing the 'C' by the proper letter.
So, what do you think?!?!?
Later, -- Ivan Passos -o) Integration Manager, Cyclades - http://www.cyclades.com /\\ Project Leader, NetLinOS - http://www.netlinos.org _\_V -------------------------------------------------------------------- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |