BSP430  20141115
Board Support Package for MSP430 microcontrollers
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
resource.h
Go to the documentation of this file.
1 /* Copyright 2013-2014, Peter A. Bigot
2  *
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  *
11  * * Redistributions in binary form must reproduce the above copyright notice,
12  * this list of conditions and the following disclaimer in the documentation
13  * and/or other materials provided with the distribution.
14  *
15  * * Neither the name of the software nor the names of its contributors may be
16  * used to endorse or promote products derived from this software without
17  * specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 
65 #ifndef BSP430_RESOURCE_H
66 #define BSP430_RESOURCE_H
67 
68 #include <bsp430/core.h>
69 
70 /* Forward declaration */
72 
78 typedef struct sBSP430resource {
82  void * volatile holder;
83 
87  unsigned int volatile count;
88 
93  struct sBSP430resourceWaiter * volatile waiter;
95 
98 
123 typedef int (* iBSP430resourceWaitCallback_ni) (hBSP430resource resource,
124  struct sBSP430resourceWaiter * waiter);
125 
128 typedef struct sBSP430resourceWaiter {
131 
138  const void * context;
139 
141  struct sBSP430resourceWaiter * volatile next;
143 
146 typedef enum eBSP430resourceWait {
150 
157 
165 
168 
217 int iBSP430resourceClaim_ni (hBSP430resource resource,
218  void * self,
219  eBSP430resourceWait wait_type,
220  hBSP430resourceWaiter waiter);
221 
244 int iBSP430resourceRelease_ni (hBSP430resource resource,
245  void * self);
246 
272 int iBSP430resourceCancelWait_ni (hBSP430resource resource,
273  hBSP430resourceWaiter waiter);
274 
284  volatile unsigned int * flagp;
285 
288  unsigned int flagv;
290 
303 int iBSP430resourceSetFlagOnRelease (hBSP430resource resource,
304  hBSP430resourceWaiter waiter);
305 
306 #endif /* BSP430_RESOURCE_H */
int iBSP430resourceSetFlagOnRelease(hBSP430resource resource, hBSP430resourceWaiter waiter)
const void * context
Definition: resource.h:138
Definition: resource.h:156
Definition: resource.h:163
void *volatile holder
Definition: resource.h:82
Definition: resource.h:78
int iBSP430resourceRelease_ni(hBSP430resource resource, void *self)
Common header included by all BSP430 leaf headers.
struct sBSP430resource sBSP430resource
struct sBSP430resourceWaiter sBSP430resourceWaiter
struct sBSP430resourceWaiter *volatile waiter
Definition: resource.h:93
int iBSP430resourceClaim_ni(hBSP430resource resource, void *self, eBSP430resourceWait wait_type, hBSP430resourceWaiter waiter)
unsigned int volatile count
Definition: resource.h:87
unsigned int flagv
Definition: resource.h:288
Definition: resource.h:149
volatile unsigned int * flagp
Definition: resource.h:284
int(* iBSP430resourceWaitCallback_ni)(hBSP430resource resource, struct sBSP430resourceWaiter *waiter)
Definition: resource.h:123
struct sBSP430resourceWaiter * hBSP430resourceWaiter
Definition: resource.h:167
Definition: resource.h:282
struct sBSP430resource * hBSP430resource
Definition: resource.h:97
struct sBSP430resourceWaiter *volatile next
Definition: resource.h:141
int iBSP430resourceCancelWait_ni(hBSP430resource resource, hBSP430resourceWaiter waiter)
iBSP430resourceWaitCallback_ni callback_ni
Definition: resource.h:130
struct sBSP430resourceReleaseFlag sBSP430resourceReleaseFlag
eBSP430resourceWait
Definition: resource.h:146
Definition: resource.h:128