mirror of
https://github.com/reactos/reactos.git
synced 2024-10-21 00:18:26 +00:00
- Wait untill all usb embedded drivers are initialized before returning from DriverEntry. This allows usb mouse driver to have a chance to register itself before mouclass is loaded.
svn path=/trunk/; revision=39786
This commit is contained in:
parent
f717c34ae1
commit
a96493a8eb
|
@ -202,6 +202,7 @@ dev_mgr_strobe(PUSB_DEV_MANAGER dev_mgr)
|
||||||
pevent->context = (ULONG) dev_mgr;
|
pevent->context = (ULONG) dev_mgr;
|
||||||
|
|
||||||
KeInitializeEvent(&dev_mgr->wake_up_event, SynchronizationEvent, FALSE);
|
KeInitializeEvent(&dev_mgr->wake_up_event, SynchronizationEvent, FALSE);
|
||||||
|
KeInitializeEvent(&dev_mgr->drivers_inited, NotificationEvent, FALSE);
|
||||||
|
|
||||||
InsertTailList(&dev_mgr->event_list, &pevent->event_link);
|
InsertTailList(&dev_mgr->event_list, &pevent->event_link);
|
||||||
|
|
||||||
|
@ -273,6 +274,9 @@ dev_mgr_event_init(PUSB_DEV pdev, //always null. we do not use this param
|
||||||
KeSetTimerEx(&dev_mgr->dev_mgr_timer,
|
KeSetTimerEx(&dev_mgr->dev_mgr_timer,
|
||||||
due_time, DEV_MGR_TIMER_INTERVAL_MS, &dev_mgr->dev_mgr_timer_dpc);
|
due_time, DEV_MGR_TIMER_INTERVAL_MS, &dev_mgr->dev_mgr_timer_dpc);
|
||||||
|
|
||||||
|
/* Signal we're done initing */
|
||||||
|
KeSetEvent(&dev_mgr->drivers_inited, 0, FALSE);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -286,6 +290,7 @@ dev_mgr_event_init(PUSB_DEV pdev, //always null. we do not use this param
|
||||||
|
|
||||||
KeCancelTimer(&dev_mgr->dev_mgr_timer);
|
KeCancelTimer(&dev_mgr->dev_mgr_timer);
|
||||||
KeRemoveQueueDpc(&dev_mgr->dev_mgr_timer_dpc);
|
KeRemoveQueueDpc(&dev_mgr->dev_mgr_timer_dpc);
|
||||||
|
KeSetEvent(&dev_mgr->drivers_inited, 0, FALSE);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,6 +98,7 @@ typedef struct _USB_DEV_MANAGER
|
||||||
LIST_HEAD event_list;
|
LIST_HEAD event_list;
|
||||||
USB_EVENT_POOL event_pool;
|
USB_EVENT_POOL event_pool;
|
||||||
|
|
||||||
|
KEVENT drivers_inited;
|
||||||
KTIMER dev_mgr_timer;
|
KTIMER dev_mgr_timer;
|
||||||
KDPC dev_mgr_timer_dpc;
|
KDPC dev_mgr_timer_dpc;
|
||||||
KSPIN_LOCK timer_svc_list_lock;
|
KSPIN_LOCK timer_svc_list_lock;
|
||||||
|
|
|
@ -3752,7 +3752,6 @@ uhci_init_hcd_interface(PUHCI_DEV uhci)
|
||||||
uhci->hcd_interf.flags = HCD_TYPE_UHCI; //hcd types | hcd id
|
uhci->hcd_interf.flags = HCD_TYPE_UHCI; //hcd types | hcd id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS NTAPI
|
NTSTATUS NTAPI
|
||||||
generic_dispatch_irp(IN PDEVICE_OBJECT dev_obj, IN PIRP irp)
|
generic_dispatch_irp(IN PDEVICE_OBJECT dev_obj, IN PIRP irp)
|
||||||
{
|
{
|
||||||
|
@ -3807,9 +3806,9 @@ NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
|
DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
|
||||||
{
|
{
|
||||||
#if DBG
|
|
||||||
NTSTATUS ntStatus = STATUS_SUCCESS;
|
NTSTATUS ntStatus = STATUS_SUCCESS;
|
||||||
|
|
||||||
|
#if DBG
|
||||||
// should be done before any debug output is done.
|
// should be done before any debug output is done.
|
||||||
// read our debug verbosity level from the registry
|
// read our debug verbosity level from the registry
|
||||||
//NetacOD_GetRegistryDword( NetacOD_REGISTRY_PARAMETERS_PATH, //absolute registry path
|
//NetacOD_GetRegistryDword( NetacOD_REGISTRY_PARAMETERS_PATH, //absolute registry path
|
||||||
|
@ -3867,6 +3866,9 @@ DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
|
||||||
|
|
||||||
dev_mgr_start_hcd(&g_dev_mgr);
|
dev_mgr_start_hcd(&g_dev_mgr);
|
||||||
|
|
||||||
|
/* Wait till all drivers are initialized */
|
||||||
|
ntStatus = KeWaitForSingleObject(&g_dev_mgr.drivers_inited, Executive, KernelMode, TRUE, NULL);
|
||||||
|
|
||||||
uhci_dbg_print_cond(DBGLVL_DEFAULT, DEBUG_UHCI, ("DriverEntry(): exiting... (%x)\n", ntStatus));
|
uhci_dbg_print_cond(DBGLVL_DEFAULT, DEBUG_UHCI, ("DriverEntry(): exiting... (%x)\n", ntStatus));
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue