vice/device.h
===================================================================
--- include/device/device.h     (revision 417)
+++ include/device/device.h     (working copy)
@@ -112,18 +112,22 @@
        void (*set_link)(struct device * dev, unsigned int link);
        void (*reset_bus)(struct bus *bus);

-       /* a constructor. The constructor for a given device is defined in
the device source file.
-        * When is this called? Not for the static tree. When the scan bus
code finds a new device, it must
-        * create it and insert it into the device tree. To do this, it
calls a device constructor.
-        * The set of all device constructors is concatenated into the
constructors array of structures via the usual
-        * gcc hack of naming a segment.

Let's drop the "gcc hack" comment, it no longer applies.

Index: device/device.c
===================================================================
--- device/device.c     (revision 417)
+++ device/device.c     (working copy)

-//      spin_lock(&dev_lock);
+       spin_lock(&dev_lock);

        /* Find the last child of our parent. */
        for (child = parent->children; child && child->sibling; /* */) {
                child = child->sibling;
        }

-       dev = constructor(devid);
+       dev = new_device();
        if (!dev)
-               printk(BIOS_DEBUG, "%s: No constructor, going with empty dev",
-                      dev_id_string(devid));
+               return NULL;

are you missing a spin_unlock here? If we are doing lock/unlock then
the failure case should probably be a goto Error in the kernel style,
so we don' t leave a dangling lock.


 thanks,

ron

-- 
linuxbios mailing list
[email protected]
http://www.linuxbios.org/mailman/listinfo/linuxbios

Reply via email to