7 #define MAX_TIMER_SVCS 24
9 #define USB_EVENT_FLAG_ACTIVE 0x80000000
11 #define USB_EVENT_FLAG_QUE_TYPE 0x000000FF
12 #define USB_EVENT_FLAG_QUE_RESET 0x01
13 #define USB_EVENT_FLAG_NOQUE 0x00
15 #define USB_EVENT_DEFAULT 0x00 //as a placeholder
16 #define USB_EVENT_INIT_DEV_MGR 0x01
17 #define USB_EVENT_HUB_POLL 0x02
18 #define USB_EVENT_WAIT_RESET_PORT 0x03
19 #define USB_EVENT_CLEAR_TT_BUFFER 0x04
21 typedef VOID ( *PROCESS_QUEUE
)(
22 PLIST_HEAD event_list
,
23 struct _USB_EVENT_POOL
*event_pool
,
24 struct _USB_EVENT
*usb_event
,
25 struct _USB_EVENT
*out_event
28 typedef VOID ( *PROCESS_EVENT
)(
35 typedef struct _USB_EVENT
37 LIST_ENTRY event_link
;
43 struct _USB_EVENT
*pnext
; //vertical queue for serialized operation
44 PROCESS_EVENT process_event
;
45 PROCESS_QUEUE process_queue
;
47 } USB_EVENT
, *PUSB_EVENT
;
49 typedef struct _USB_EVENT_POOL
51 PUSB_EVENT event_array
;
57 } USB_EVENT_POOL
, *PUSB_EVENT_POOL
;
68 ); //add qhs till pnext == NULL
91 #define DEV_MGR_TIMER_INTERVAL_NS ( 10 * 1000 * 10 ) //unit 100 ns
92 #define DEV_MGR_TIMER_INTERVAL_MS 10
94 typedef VOID ( *TIMER_SVC_HANDLER
)(PUSB_DEV dev
, PVOID context
);
96 typedef struct _TIMER_SVC
98 LIST_ENTRY timer_svc_link
;
103 TIMER_SVC_HANDLER func
;
105 } TIMER_SVC
, *PTIMER_SVC
;
107 typedef struct _TIMER_SVC_POOL
109 PTIMER_SVC timer_svc_array
;
113 KSPIN_LOCK pool_lock
;
115 } TIMER_SVC_POOL
, *PTIMER_SVC_POOL
;
123 PTIMER_SVC_POOL pool
,
129 PTIMER_SVC_POOL pool
,
134 destroy_timer_svc_pool(
144 unlock_timer_svc_pool(