RE: PATCH: PCI changes for pre-2.3.16-1

Bret Indrelee (breti@bit3.com)
Tue, 31 Aug 1999 14:24:02 -0500


> > If you want to make life easier, just do a
> >
> > char * pci_slot_fmt(struct pci_dev *dev)
> > {
> > static char fmt[10];
> >
> > sprintf(fmt, "%d:%d:%d", BUS(dev), SLOT(dev), FN(dev));
> > return fmt;
> > }
>
> Writing functions returning pointers to static data is
> just a subscription
> for the magic bug of the week contest. I don't want to have
> to take care
> of "you cannot print two slot names in one printk" type things.
>
> > if it's the re-typing of the stuff you object to, and you
> just want to
> > have one place to change when you want to change the way
> you print out
> > devices. I'd certainly agree with that kind of thing.
>
> I want to save re-typing and also to unify the format of
> PCI slot numbers
> printed at various places in the kernel. Also, it saves a
> bit of space
> since the cached string takes only 8 bytes which is certainly
> less than
> what does passing of two extra parameters to a single printk take.
>
> Also, adding a slot name to struct pci_dev seems to be the simplest
> and lowest-overhead solution I see.

This may be a reasonable compromised. Define a couple of macros to create
the name.

#define PCI_SLOT_NAME_FMT "%d:%d:%d"
#define PCI_SLOT_NAME(dev) BUS(dev), SLOT(dev), FN(dev)

printk(KERN_WARNING PCI_SLOT_NAME_FMT " is misbehaving. It should be
punished.\n", PCI_SLOT_NAME(dev));

The only problem with this is that the argument to the second macro gets
evaluated multiple times.

This gives you consistent names without reserving a field for the name. If
you really must save those keystrokes, you could come up with shorter names
for the macros.

-Bret

-------------------------------------------------------------
SBS Technologies, Connectivity Products
... solutions for real-time connectivity

Bret Indrelee, Engineer
SBS Technologies, Inc., Connectivity Products
1284 Corporate Center Drive, St. Paul MN 55121
Direct: (651) 905-4731
Main: (651) 905-4700 Fax: (651) 905-4701
E-mail: bindrelee@sbs-cp.com http://www.sbs.com
-------------------------------------------------------------

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/