[bus] bus__add_child once more takes a bus param
authorShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Fri, 21 May 2010 03:48:15 +0000 (23:48 -0400)
committerShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Fri, 21 May 2010 03:48:15 +0000 (23:48 -0400)
Trying to move away from the "one bus" model.

src/aoe/driver.c
src/include/bus.h
src/winvblock/bus/bus.c
src/winvblock/filedisk.c
src/winvblock/ramdisk/grub4dos.c
src/winvblock/ramdisk/memdisk.c

index c73290c..c3125b0 100644 (file)
@@ -2187,7 +2187,7 @@ process_abft (
       aoe_disk.disk.ops = &default_ops;
       disk__put_dev_ops ( &aoe_disk.disk.device );
       aoe_disk.disk.device.size = sizeof ( aoe_disk_type );
-      bus__add_child ( &aoe_disk.disk.device );
+      bus__add_child ( bus__boot (  ), &aoe_disk.disk.device );
     }
   else
     {
@@ -2353,7 +2353,7 @@ irp__handler_decl (
   aoe_disk.disk.ops = &default_ops;
   disk__put_dev_ops ( &aoe_disk.disk.device );
   aoe_disk.disk.device.size = sizeof ( aoe_disk_type );
-  bus__add_child ( &aoe_disk.disk.device );
+  bus__add_child ( bus__boot (  ), &aoe_disk.disk.device );
   Irp->IoStatus.Information = 0;
   *completion_ptr = TRUE;
   return STATUS_SUCCESS;
index f1272c2..0d9281d 100644 (file)
@@ -79,11 +79,13 @@ extern winvblock__lib_func bus__type_ptr bus__create (
 /**
  * Add a child node to the bus
  *
- * @v dev_ptr           The details for the child device to add
+ * @v bus_ptr           Points to the bus receiving the child
+ * @v dev_ptr           Points to the child device to add
  *
  * Returns TRUE for success, FALSE for failure
  */
 extern winvblock__lib_func winvblock__bool STDCALL bus__add_child (
+  IN OUT bus__type_ptr bus_ptr,
   IN device__type_ptr dev_ptr
  );
 
index 8f2b7ae..b872428 100644 (file)
@@ -67,12 +67,14 @@ bus__finalize (
 /**
  * Add a child node to the bus
  *
- * @v dev_ptr           The details for the child device to add
+ * @v bus_ptr           Points to the bus receiving the child
+ * @v dev_ptr           Points to the child device to add
  *
  * Returns TRUE for success, FALSE for failure
  */
 winvblock__lib_func winvblock__bool STDCALL
 bus__add_child (
+  IN OUT bus__type_ptr bus_ptr,
   IN device__type_ptr dev_ptr
  )
 {
@@ -82,19 +84,14 @@ bus__add_child (
    * @v walker              Walks the child nodes
    */
   PDEVICE_OBJECT dev_obj_ptr;
-  bus__type_ptr bus_ptr;
   device__type_ptr walker;
 
   DBG ( "Entry\n" );
-  if ( !boot_bus_fdo )
+  if ( ( bus_ptr == NULL ) || ( dev_ptr == NULL ) )
     {
-      DBG ( "No bus device!\n" );
+      DBG ( "No bus or no device!\n" );
       return FALSE;
     }
-  /*
-   * Establish a pointer to the bus
-   */
-  bus_ptr = get_bus_ptr ( boot_bus_fdo->DeviceExtension );
   /*
    * Create the child device
    */
@@ -110,7 +107,7 @@ bus__add_child (
    * extension space.  We don't need the original details anymore
    */
   dev_ptr = dev_obj_ptr->DeviceExtension;
-  dev_ptr->Parent = boot_bus_fdo;
+  dev_ptr->Parent = bus_ptr->device.Self;
   dev_ptr->next_sibling_ptr = NULL;
   /*
    * Initialize the device.  For disks, this routine is responsible for
index 0395b04..9d4454a 100644 (file)
@@ -203,7 +203,7 @@ irp__handler_decl ( filedisk__attach )
   filedisk.disk.ops = &default_ops;
   disk__put_dev_ops ( &filedisk.disk.device );
   filedisk.disk.device.size = sizeof ( filedisk__type );
-  bus__add_child ( &filedisk.disk.device );
+  bus__add_child ( bus__boot (  ), &filedisk.disk.device );
   return STATUS_SUCCESS;
 }
 
index 5ac9725..28cba39 100644 (file)
@@ -159,7 +159,7 @@ grub4dos__find (
          disk__put_dev_ops ( &ramdisk.disk.device );
          ramdisk.disk.device.size = sizeof ( ramdisk__type );
          FoundGrub4DosMapping = TRUE;
-         bus__add_child ( &ramdisk.disk.device );
+         bus__add_child ( bus__boot (  ), &ramdisk.disk.device );
        }
       InterruptVector = &SafeMbrHookPtr->PrevHook;
     }
index ebc7855..7c5148c 100644 (file)
@@ -107,7 +107,7 @@ check_mbft (
   ramdisk.disk.ops = &ramdisk__default_ops;
   disk__put_dev_ops ( &ramdisk.disk.device );
   ramdisk.disk.device.size = sizeof ( ramdisk__type );
-  bus__add_child ( &ramdisk.disk.device );
+  bus__add_child ( bus__boot (  ), &ramdisk.disk.device );
   AssociatedHook->Flags = 1;
   return TRUE;
 }