]> Pileus Git - ~andy/linux/blob - drivers/staging/csr/csr_framework_ext.h
staging: csr: remove CsrMutexLock function
[~andy/linux] / drivers / staging / csr / csr_framework_ext.h
1 #ifndef CSR_FRAMEWORK_EXT_H__
2 #define CSR_FRAMEWORK_EXT_H__
3 /*****************************************************************************
4
5             (c) Cambridge Silicon Radio Limited 2010
6             All rights reserved and confidential information of CSR
7
8             Refer to LICENSE.txt included with this source for details
9             on the license terms.
10
11 *****************************************************************************/
12
13 #include "csr_result.h"
14 #include "csr_framework_ext_types.h"
15
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19
20 /* Result codes */
21 #define CSR_FE_RESULT_NO_MORE_EVENTS    ((CsrResult) 0x0001)
22 #define CSR_FE_RESULT_INVALID_POINTER   ((CsrResult) 0x0002)
23 #define CSR_FE_RESULT_INVALID_HANDLE    ((CsrResult) 0x0003)
24 #define CSR_FE_RESULT_NO_MORE_MUTEXES   ((CsrResult) 0x0004)
25 #define CSR_FE_RESULT_TIMEOUT           ((CsrResult) 0x0005)
26 #define CSR_FE_RESULT_NO_MORE_THREADS   ((CsrResult) 0x0006)
27
28 /* Thread priorities */
29 #define CSR_THREAD_PRIORITY_HIGHEST     ((u16) 0)
30 #define CSR_THREAD_PRIORITY_HIGH        ((u16) 1)
31 #define CSR_THREAD_PRIORITY_NORMAL      ((u16) 2)
32 #define CSR_THREAD_PRIORITY_LOW         ((u16) 3)
33 #define CSR_THREAD_PRIORITY_LOWEST      ((u16) 4)
34
35 #define CSR_EVENT_WAIT_INFINITE         ((u16) 0xFFFF)
36
37 /*----------------------------------------------------------------------------*
38  *  NAME
39  *      CsrEventCreate
40  *
41  *  DESCRIPTION
42  *      Creates an event and returns a handle to the created event.
43  *
44  *  RETURNS
45  *      Possible values:
46  *          CSR_RESULT_SUCCESS          in case of success
47  *          CSR_FE_RESULT_NO_MORE_EVENTS   in case of out of event resources
48  *          CSR_FE_RESULT_INVALID_POINTER  in case the eventHandle pointer is invalid
49  *
50  *----------------------------------------------------------------------------*/
51 CsrResult CsrEventCreate(CsrEventHandle *eventHandle);
52
53 /*----------------------------------------------------------------------------*
54  *  NAME
55  *      CsrEventWait
56  *
57  *  DESCRIPTION
58  *      Wait fore one or more of the event bits to be set.
59  *
60  *  RETURNS
61  *      Possible values:
62  *          CSR_RESULT_SUCCESS              in case of success
63  *          CSR_FE_RESULT_TIMEOUT              in case of timeout
64  *          CSR_FE_RESULT_INVALID_HANDLE       in case the eventHandle is invalid
65  *          CSR_FE_RESULT_INVALID_POINTER      in case the eventBits pointer is invalid
66  *
67  *----------------------------------------------------------------------------*/
68 CsrResult CsrEventWait(CsrEventHandle *eventHandle, u16 timeoutInMs, u32 *eventBits);
69
70 /*----------------------------------------------------------------------------*
71  *  NAME
72  *      CsrEventSet
73  *
74  *  DESCRIPTION
75  *      Set an event.
76  *
77  *  RETURNS
78  *      Possible values:
79  *          CSR_RESULT_SUCCESS              in case of success
80  *          CSR_FE_RESULT_INVALID_HANDLE       in case the eventHandle is invalid
81  *
82  *----------------------------------------------------------------------------*/
83 CsrResult CsrEventSet(CsrEventHandle *eventHandle, u32 eventBits);
84
85 /*----------------------------------------------------------------------------*
86  *  NAME
87  *      CsrEventDestroy
88  *
89  *  DESCRIPTION
90  *      Destroy the event associated.
91  *
92  *  RETURNS
93  *      void
94  *
95  *----------------------------------------------------------------------------*/
96 void CsrEventDestroy(CsrEventHandle *eventHandle);
97
98 /*----------------------------------------------------------------------------*
99  *  NAME
100  *      CsrMutexCreate
101  *
102  *  DESCRIPTION
103  *      Create a mutex and return a handle to the created mutex.
104  *
105  *  RETURNS
106  *      Possible values:
107  *          CSR_RESULT_SUCCESS           in case of success
108  *          CSR_FE_RESULT_NO_MORE_MUTEXES   in case of out of mutex resources
109  *          CSR_FE_RESULT_INVALID_POINTER   in case the mutexHandle pointer is invalid
110  *
111  *----------------------------------------------------------------------------*/
112 CsrResult CsrMutexCreate(CsrMutexHandle *mutexHandle);
113
114 /*----------------------------------------------------------------------------*
115  *  NAME
116  *      CsrMutexUnlock
117  *
118  *  DESCRIPTION
119  *      Unlock the mutex refered to by the provided handle.
120  *
121  *  RETURNS
122  *      Possible values:
123  *          CSR_RESULT_SUCCESS           in case of success
124  *          CSR_FE_RESULT_INVALID_HANDLE    in case the mutexHandle is invalid
125  *
126  *----------------------------------------------------------------------------*/
127 CsrResult CsrMutexUnlock(CsrMutexHandle *mutexHandle);
128
129 /*----------------------------------------------------------------------------*
130  *  NAME
131  *      CsrMutexDestroy
132  *
133  *  DESCRIPTION
134  *      Destroy the previously created mutex.
135  *
136  *  RETURNS
137  *      void
138  *
139  *----------------------------------------------------------------------------*/
140 void CsrMutexDestroy(CsrMutexHandle *mutexHandle);
141
142 /*----------------------------------------------------------------------------*
143  *  NAME
144  *      CsrGlobalMutexLock
145  *
146  *  DESCRIPTION
147  *      Lock the global mutex. The global mutex is a single pre-initialised
148  *      shared mutex, spinlock or similar that does not need to be created prior
149  *      to use. The limitation is that there is only one single lock shared
150  *      between all code. Consequently, it must only be used very briefly to
151  *      either protect simple one-time initialisation or to protect the creation
152  *      of a dedicated mutex by calling CsrMutexCreate.
153  *
154  *----------------------------------------------------------------------------*/
155 void CsrGlobalMutexLock(void);
156
157 /*----------------------------------------------------------------------------*
158  *  NAME
159  *      CsrGlobalMutexUnlock
160  *
161  *  DESCRIPTION
162  *      Unlock the global mutex.
163  *
164  *----------------------------------------------------------------------------*/
165 void CsrGlobalMutexUnlock(void);
166
167 /*----------------------------------------------------------------------------*
168  *  NAME
169  *      CsrThreadSleep
170  *
171  *  DESCRIPTION
172  *      Sleep for a given period.
173  *
174  *  RETURNS
175  *      void
176  *
177  *----------------------------------------------------------------------------*/
178 void CsrThreadSleep(u16 sleepTimeInMs);
179
180 #ifdef __cplusplus
181 }
182 #endif
183
184 #endif