All of lore.kernel.org
 help / color / mirror / Atom feed
From: Martin Waitz <tali@admingilde.org>
To: Patrick Mochel <mochel@osdl.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: [PATCH] allow to register interfaces after devices
Date: Tue, 26 Nov 2002 22:22:39 +0100	[thread overview]
Message-ID: <20021126212239.GA1118@admingilde.org> (raw)

[-- Attachment #1: Type: text/plain, Size: 2821 bytes --]

hi :)


i had a problem some of my code that registered a interface for cpu_devclass
was being run after cpu devices got added to the class.

current code only adds those devices to the interface that are
added after registering the interface.
this patch changes it by walking all devices that are already registered
to intf->devclass.


--- linux-2.5/drivers/base/intf.c       2002-11-26 21:41:00.000000000 +0100
+++ linux/drivers/base/intf.c   2002-11-26 21:41:00.000000000 +0100
@@ -35,17 +35,36 @@
 int interface_register(struct device_interface * intf)
 {
        struct device_class * cls = get_devclass(intf->devclass);
-       int error = 0;
+       struct list_head * drv_node;
+
+       if (!cls) {
+               return -EINVAL;
+       }
 
-       if (cls) {
-               pr_debug("register interface '%s' with class '%s'\n",
-                        intf->name,cls->name);
-               strncpy(intf->kobj.name,intf->name,KOBJ_NAME_LEN);
-               intf->kobj.subsys = &cls->subsys;
-               kobject_register(&intf->kobj);
-       } else
-               error = -EINVAL;
-       return error;
+       pr_debug("register interface '%s' with class '%s'\n",
+                intf->name,cls->name);
+       strncpy(intf->kobj.name,intf->name,KOBJ_NAME_LEN);
+       intf->kobj.subsys = &cls->subsys;
+       kobject_register(&intf->kobj);
+
+       /* walk all devices already registered to intf->devclass */
+       list_for_each(drv_node, &cls->drivers) {
+               struct device_driver * driver =
+                       container_of(drv_node,struct device_driver,class_list);
+               struct list_head * dev_node;
+
+               list_for_each(dev_node, &driver->devices) {
+                       int error;
+                       struct device * dev =
+                               container_of(dev_node,struct device,driver_list);
+                       error = intf->add_device(dev);
+                       if (error)
+                               pr_debug("%s:%s: adding '%s' failed: %d\n",
+                                        cls->name,intf->name,dev->name,error);
+               }
+       }
+
+       return 0;
 }
 
 void interface_unregister(struct device_interface * intf)


-- 
CU,		  / Friedrich-Alexander University Erlangen, Germany
Martin Waitz	//  [Tali on IRCnet]  [tali.home.pages.de] _________
______________/// - - - - - - - - - - - - - - - - - - - - ///
dies ist eine manuell generierte mail, sie beinhaltet    //
tippfehler und ist auch ohne grossbuchstaben gueltig.   /
			    -
Wer bereit ist, grundlegende Freiheiten aufzugeben, um sich 
kurzfristige Sicherheit zu verschaffen, der hat weder Freiheit 
noch Sicherheit verdient.
			Benjamin Franklin  (1706 - 1790)

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

             reply	other threads:[~2002-11-26 21:15 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-11-26 21:22 Martin Waitz [this message]
2002-11-28  3:48 ` [PATCH] allow to register interfaces after devices Patrick Mochel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20021126212239.GA1118@admingilde.org \
    --to=tali@admingilde.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mochel@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.