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

Jeff Garzik (jgarzik@pobox.com)
Tue, 7 Jan 2003 16:43:15 -0500


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.

> +static struct subsystem net_subsys;
> +
>
> /*******************************************************************************
>
> @@ -2545,7 +2547,10 @@
> notifier_call_chain(&netdev_chain, NETDEV_REGISTER, dev);
>
> net_run_sbin_hotplug(dev, "register");
> - ret = 0;
> +
> + 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?

> @@ -2671,6 +2676,8 @@
> goto out;
> }
>
> + kobject_unregister(&dev->kobj);
> +

...especially if kobject_register failed above

Jeff

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