[IBBUS] __iou/port_was_hibernated() change NTSTATUS --> ib_api_status_t to be consist...
[mirror/winof/.git] / core / winmad / kernel / wm_provider.h
1 /*\r
2  * Copyright (c) 2008 Intel Corporation. All rights reserved.\r
3  *\r
4  * This software is available to you under the OpenIB.org BSD license\r
5  * below:\r
6  *\r
7  *     Redistribution and use in source and binary forms, with or\r
8  *     without modification, are permitted provided that the following\r
9  *     conditions are met:\r
10  *\r
11  *      - Redistributions of source code must retain the above\r
12  *        copyright notice, this list of conditions and the following\r
13  *        disclaimer.\r
14  *\r
15  *      - Redistributions in binary form must reproduce the above\r
16  *        copyright notice, this list of conditions and the following\r
17  *        disclaimer in the documentation and/or other materials\r
18  *        provided with the distribution.\r
19  *\r
20  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
21  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
22  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AWV\r
23  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
24  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
25  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
26  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
27  * SOFTWARE.\r
28  */\r
29 \r
30 #pragma once\r
31 \r
32 #ifndef _WM_PROVIDER_H_\r
33 #define _WM_PROVIDER_H_\r
34 \r
35 #include <ntddk.h>\r
36 #include <wdf.h>\r
37 #include <wdm.h>\r
38 \r
39 #include <iba\ib_al.h>\r
40 #include "wm_driver.h"\r
41 #include "index_list.h"\r
42 \r
43 typedef struct _WM_PROVIDER\r
44 {\r
45         LIST_ENTRY                      Entry;\r
46         INDEX_LIST                      RegIndex;\r
47         WDFQUEUE                        ReadQueue;\r
48 \r
49         ib_mad_element_t        *MadHead;\r
50         ib_mad_element_t        *MadTail;\r
51 \r
52         KGUARDED_MUTEX          Lock;\r
53         LONG                            Ref;\r
54         KEVENT                          Event;\r
55         LONG                            Pending;\r
56         LONG                            Active;\r
57         KEVENT                          SharedEvent;\r
58         LONG                            Exclusive;\r
59         KEVENT                          ExclusiveEvent;\r
60 \r
61 }       WM_PROVIDER;\r
62 \r
63 void WmProviderGet(WM_PROVIDER *pProvider);\r
64 void WmProviderPut(WM_PROVIDER *pProvider);\r
65 NTSTATUS WmProviderInit(WM_PROVIDER *pProvider);\r
66 void WmProviderCleanup(WM_PROVIDER *pProvider);\r
67 \r
68 void WmProviderRemoveHandler(WM_PROVIDER *pProvider, WM_IB_DEVICE *pDevice);\r
69 void WmProviderDisableRemove(WM_PROVIDER *pProvider);\r
70 void WmProviderEnableRemove(WM_PROVIDER *pProvider);\r
71 \r
72 void WmProviderRead(WM_PROVIDER *pProvider, WDFREQUEST Request);\r
73 void WmProviderWrite(WM_PROVIDER *pProvider, WDFREQUEST Request);\r
74 void WmReceiveHandler(ib_mad_svc_handle_t hService, void *Context,\r
75                                           ib_mad_element_t *pMad);\r
76 void WmSendHandler(ib_mad_svc_handle_t hService, void *Context,\r
77                                    ib_mad_element_t *pMad);\r
78 void WmProviderFlushReceives(WM_PROVIDER *pProvider,\r
79                                                          struct _WM_REGISTRATION *pRegistration);\r
80 void WmProviderCancel(WM_PROVIDER *pProvider, WDFREQUEST Request);\r
81 \r
82 #endif // _WM_PROVIDER_H_\r