Re: net devices: Get network devices to show up in sysfs.

From: Patrick Mochel (mochel@osdl.org)
Date: Tue Jan 07 2003 - 16:12:22 EST


On Tue, 7 Jan 2003, Jeff Garzik wrote:

> On Mon, Jan 06, 2003 at 07:50:37PM +0000, Linux Kernel Mailing List wrote:
> > ChangeSet 1.838.151.11, 2003/01/06 13:50:37-06:00, mochel@osdl.org
> >
> > net devices: Get network devices to show up in sysfs.
> >
> > - declare net_subsys, and register during net_dev_init().
> > - Add kobject to struct net_device.
> > - initialize name and register in register_netdevice().
> > - remove in unregister_netdevice().
> >
> > diff -Nru a/include/linux/netdevice.h b/include/linux/netdevice.h
> > --- a/include/linux/netdevice.h Tue Jan 7 13:06:05 2003
> > +++ b/include/linux/netdevice.h Tue Jan 7 13:06:05 2003
> > @@ -28,6 +28,7 @@
> > #include <linux/if.h>
> > #include <linux/if_ether.h>
> > #include <linux/if_packet.h>
> > +#include <linux/kobject.h>
> >
> > #include <asm/atomic.h>
> > #include <asm/cache.h>
> > @@ -438,6 +439,9 @@
> > /* this will get initialized at each interface type init routine */
> > struct divert_blk *divert;
> > #endif /* CONFIG_NET_DIVERT */
> > +
> > + /* generic object representation */
> > + struct kobject kobj;
> > };
>
> Just curious, is this needed purely for reference counting, or mainly to
> hook into sysfs? If the former, net devices already have reference
> counting, so I want to make sure kobjects do not run afoul of that.

The latter. If desired, the reference counting can be converted to use
kobject refcounting. I can look into this, if you like.

> > + snprintf(dev->kobj.name,KOBJ_NAME_LEN,dev->name);
> > + kobj_set_kset_s(dev,net_subsys);
> > + ret = kobject_register(&dev->kobj);
>
> If the return code matters, shouldn't you be checking for its success?

Bah. How about the attached patch instead?

        -pat

===== net/core/dev.c 1.51 vs edited =====
--- 1.51/net/core/dev.c Mon Jan 6 13:50:36 2003
+++ edited/net/core/dev.c Tue Jan 7 15:10:55 2003
@@ -2520,6 +2520,11 @@
                 if (d == dev || !strcmp(d->name, dev->name))
                         goto out_err;
         }
+ snprintf(dev->kobj.name,KOBJ_NAME_LEN,dev->name);
+ kobj_set_kset_s(dev,net_subsys);
+ if ((ret = kobject_register(&dev->kobj)))
+ goto out_err;
+
         /*
          * nil rebuild_header routine,
          * that should be never called and used as just bug trap.
@@ -2547,10 +2552,7 @@
         notifier_call_chain(&netdev_chain, NETDEV_REGISTER, dev);
 
         net_run_sbin_hotplug(dev, "register");
-
- snprintf(dev->kobj.name,KOBJ_NAME_LEN,dev->name);
- kobj_set_kset_s(dev,net_subsys);
- ret = kobject_register(&dev->kobj);
+ ret = 0;
 
 out:
         return ret;

-
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/



This archive was generated by hypermail 2b29 : Tue Jan 07 2003 - 22:00:36 EST