[HALX86][PCIX] Statically link HALx86 and PCIX to the arbiter library. (#2471) 2471/head
authorVadim Galyant <vgal@rambler.ru>
Thu, 9 Apr 2020 17:19:00 +0000 (19:19 +0200)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Thu, 9 Apr 2020 17:41:16 +0000 (19:41 +0200)
drivers/bus/pcix/CMakeLists.txt
drivers/bus/pcix/arb/ar_busno.c
drivers/bus/pcix/pci.h
hal/halx86/CMakeLists.txt

index 3bd5089..9389bde 100644 (file)
@@ -1,3 +1,5 @@
+include_directories(
+    ${REACTOS_SOURCE_DIR}/sdk/lib/drivers/arbiter)
 
 list(APPEND SOURCE
     arb/ar_busno.c
@@ -41,6 +43,7 @@ add_library(pcix MODULE
     pci.rc)
 
 set_module_type(pcix kernelmodedriver)
+target_link_libraries(pcix arbiter)
 add_importlibs(pcix ntoskrnl hal)
 add_pch(pcix pci.h SOURCE)
 add_dependencies(pcix pciclass)
index 9618146..1082c0b 100644 (file)
@@ -34,11 +34,38 @@ NTSTATUS
 NTAPI
 arbusno_Initializer(IN PVOID Instance)
 {
-    UNREFERENCED_PARAMETER(Instance);
+    PPCI_ARBITER_INSTANCE Arbiter = Instance;
+    PPCI_FDO_EXTENSION FdoExtension;
+    NTSTATUS Status;
+
+    PAGED_CODE();
+
+    RtlZeroMemory(&Arbiter->CommonInstance, sizeof(Arbiter->CommonInstance));
+
+    FdoExtension = Arbiter->BusFdoExtension;
+
     /* Not yet implemented */
     UNIMPLEMENTED;
-    //while (TRUE);
-    return STATUS_SUCCESS;
+
+#if 0
+    Arbiter->CommonInstance.UnpackRequirement = arbusno_UnpackRequirement;
+    Arbiter->CommonInstance.PackResource = arbusno_PackResource;
+    Arbiter->CommonInstance.UnpackResource = arbusno_UnpackResource;
+    Arbiter->CommonInstance.ScoreRequirement = arbusno_ScoreRequirement;
+#endif
+
+    Status = ArbInitializeArbiterInstance(&Arbiter->CommonInstance,
+                                          FdoExtension->FunctionalDeviceObject,
+                                          CmResourceTypeBusNumber,
+                                          Arbiter->InstanceName,
+                                          L"Pci",
+                                          NULL);
+    if (!NT_SUCCESS(Status))
+    {
+        DPRINT1("arbusno_Initializer: init arbiter return %X", Status);
+    }
+
+    return Status;
 }
 
 NTSTATUS
index 52b6fd5..fc6b578 100644 (file)
@@ -18,6 +18,7 @@
 #include <ndk/halfuncs.h>
 #include <ndk/rtlfuncs.h>
 #include <ndk/vffuncs.h>
+#include <arbiter.h>
 
 //
 // Tag used in all pool allocations (Pci Bus)
@@ -402,7 +403,7 @@ typedef struct PCI_ARBITER_INSTANCE
     PPCI_INTERFACE Interface;
     PPCI_FDO_EXTENSION BusFdoExtension;
     WCHAR InstanceName[24];
-    //ARBITER_INSTANCE CommonInstance; FIXME: Need Arbiter Headers
+    ARBITER_INSTANCE CommonInstance;
 } PCI_ARBITER_INSTANCE, *PPCI_ARBITER_INSTANCE;
 
 //
index b95b69b..c462dc1 100644 (file)
@@ -32,7 +32,12 @@ function(add_hal _halname)
         target_link_libraries(${_halname} ${_haldata_LIBS})
     endif()
 
-    target_link_libraries(${_halname} libcntpr)
+    if (${_halname} STREQUAL "hal")
+        target_link_libraries(${_halname} libcntpr arbiter)
+    else()
+        target_link_libraries(${_halname} libcntpr)
+    endif()
+
     add_importlibs(${_halname} ntoskrnl)
     #add_pch(${_halname} include/hal.h)
     add_dependencies(${_halname} psdk asm)