[bus] Add WvBusGetNodeCount function
authorShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Thu, 30 Dec 2010 12:06:36 +0000 (07:06 -0500)
committerShao Miller <Shao.Miller@yrdsb.edu.on.ca>
Thu, 30 Dec 2010 12:06:36 +0000 (07:06 -0500)
src/include/bus.h
src/winvblock/bus/bus.c

index 43efa3c..fb453c0 100644 (file)
@@ -133,5 +133,8 @@ extern winvblock__lib_func WV_SP_BUS_NODE STDCALL WvBusGetNextNode(
 extern winvblock__lib_func PDEVICE_OBJECT STDCALL WvBusGetNodePdo(
     IN WV_SP_BUS_NODE
   );
+extern winvblock__lib_func winvblock__uint32 STDCALL WvBusGetNodeCount(
+    WV_SP_BUS_T
+  );
 
 #endif  /* WV_M_BUS_H_ */
index 58a0eea..c278b5f 100644 (file)
@@ -596,3 +596,18 @@ winvblock__lib_func PDEVICE_OBJECT STDCALL WvBusGetNodePdo(
   ) {
     return Node->BusPrivate_.Pdo;
   }
+
+/**
+ * Get the count of child nodes on a bus.
+ *
+ * @v Bus               The bus whose node-count will be returned.
+ * @v UINT32            The count of nodes on the bus.
+ *
+ * In order for this function to yield a race-free, useful result, it
+ * should be used by whatever thread calls WvBusProcessWorkItems()
+ */
+winvblock__lib_func winvblock__uint32 STDCALL WvBusGetNodeCount(
+    WV_SP_BUS_T Bus
+  ) {
+    return Bus->BusPrivate_.NodeCount;
+  }