BDS Public
Beamlib 3.3.4
This is the Beam C++ class library.
Loading...
Searching...
No Matches
BCondInt.h
Go to the documentation of this file.
1/*******************************************************************************
2 * BCondInt.h BCondInt Class
3 * T.Barnaby, BEAM Ltd, 10/12/02
4 * Copyright (c) 2012 All Right Reserved, Beam Ltd, http://www.beam.ltd.uk
5 *******************************************************************************
6 *
7 * For license see LICENSE.txt at the root of the beamlib source tree.
8 */
9#ifndef BCONDINT_H
10#define BCONDINT_H 1
11
12#include <BTypes.h>
13#include <pthread.h>
14
16class BCondInt {
17public:
18 BCondInt();
19 ~BCondInt();
20
21 void setValue(BInt value);
22 BInt value() const;
23
24 BInt increment(BInt v = 1);
25 BInt decrement(BInt v = 1);
26
30
31 void operator+=(int v);
32 void operator-=(int v);
33 void operator++(int);
34 void operator--(int);
35
36private:
37 pthread_mutex_t omutex;
38 pthread_cond_t ocond;
39 BInt ovalue;
40};
41
43 increment(v);
44}
45
47 decrement(v);
48}
49
50inline void BCondInt::operator++(int){
51 increment(1);
52}
53
54inline void BCondInt::operator--(int){
55 decrement(1);
56}
57
58
61public:
62 BCondValue();
64
65 void setValue(int value);
66 int value();
67
68 int increment(int v = 1);
69 int decrement(int v = 1);
70
71 int waitMoreThanOrEqual(int v, int decrement = 0, int timeOutUs = 0);
72 int waitLessThanOrEqual(int v, int increment = 0, int timeOutUs = 0);
73 int waitLessThan(int v, int timeOutUs = 0);
74
75 void operator+=(int v);
76 void operator-=(int v);
77 void operator++(int);
78 void operator--(int);
79private:
80 pthread_mutex_t omutex;
81 pthread_cond_t ocond;
82 int ovalue;
83};
84
85inline void BCondValue::operator+=(int v){
86 increment(v);
87}
88
89inline void BCondValue::operator-=(int v){
90 decrement(v);
91}
92
93inline void BCondValue::operator++(int){
94 increment(1);
95}
96
97inline void BCondValue::operator--(int){
98 decrement(1);
99}
100
103public:
104 BCondBool();
105 ~BCondBool();
106
107 int set();
108 int clear();
109 int value();
110 int wait();
111 int timedWait(int timeOutUs);
112
113 operator int(){ return value(); }
114private:
115 pthread_mutex_t omutex;
116 pthread_cond_t ocond;
117 int ovalue;
118};
119
122public:
123 BCondWrap();
124 ~BCondWrap();
125
126 void setValue(uint32_t value);
127 uint32_t value();
128
129 uint32_t increment(uint32_t v = 1);
130 uint32_t decrement(uint32_t v = 1);
131
132 int waitMoreThanOrEqual(uint32_t v, uint32_t decrement = 0, uint32_t timeOutUs = 0);
133 int waitLessThanOrEqual(uint32_t v, uint32_t increment = 0, uint32_t timeOutUs = 0);
134 int waitLessThan(uint32_t v, uint32_t timeOutUs = 0);
135
136 void operator+=(int v);
137 void operator-=(int v);
138 void operator++(int);
139 void operator--(int);
140private:
141 int diff(uint32_t v);
142
143 pthread_mutex_t omutex;
144 pthread_cond_t ocond;
145 uint32_t ovalue;
146};
147
148inline void BCondWrap::operator+=(int v){
149 increment(v);
150}
151
152inline void BCondWrap::operator-=(int v){
153 decrement(v);
154}
155
156inline void BCondWrap::operator++(int){
157 increment(1);
158}
159
160inline void BCondWrap::operator--(int){
161 decrement(1);
162}
163
166public:
169
170 int lock(uint32_t timeOutUs = 0);
171 int unlock();
172
173 int start(uint32_t timeOutUs = 0);
174 int end();
175
176 int locked();
177 int inUse();
178private:
179 pthread_mutex_t omutex;
180 pthread_cond_t ocond;
181 int olock;
182 int ouse;
183};
184
185#endif
const BTimeout BTimeoutForever
Definition BTypes.h:46
bool Bool
Definition BTypes.h:18
BInt32 BInt
Definition BTypes.h:32
BUInt32 BTimeout
Definition BTypes.h:45
Thread conditional boolean.
Definition BCondInt.h:102
~BCondBool()
Definition BCondInt.cpp:268
BCondBool()
Definition BCondInt.cpp:262
int timedWait(int timeOutUs)
Wait until set, with timeout.
Definition BCondInt.cpp:306
int value()
Current value.
Definition BCondInt.cpp:292
int set()
Set value. Wakes waiting.
Definition BCondInt.cpp:273
int clear()
Clear Value.
Definition BCondInt.cpp:283
int wait()
Wait until value is true.
Definition BCondInt.cpp:296
Thread conditional value.
Definition BCondInt.h:16
BInt increment(BInt v=1)
Increment. Wakes waiting.
Definition BCondInt.cpp:48
~BCondInt()
Definition BCondInt.cpp:32
BInt value() const
Current value.
Definition BCondInt.cpp:44
BInt decrement(BInt v=1)
Decrement. Wakes waiting.
Definition BCondInt.cpp:59
void operator-=(int v)
Subtract from value. Wakes waiting.
Definition BCondInt.h:46
void setValue(BInt value)
Set the value. Wakes waiting.
Definition BCondInt.cpp:37
Bool waitMoreThanOrEqual(BInt v, Bool decrement=0, BTimeout timeoutUs=BTimeoutForever)
Wait until value is at least the value given.
Definition BCondInt.cpp:70
void operator++(int)
Increment value. Wakes waiting.
Definition BCondInt.h:50
void operator--(int)
Decrement value. Wakes waiting.
Definition BCondInt.h:54
Bool waitLessThanOrEqual(BInt v, Bool increment=0, BTimeout timeoutUs=BTimeoutForever)
Wait until value is equal to or below the value given.
Definition BCondInt.cpp:94
Bool waitLessThan(BInt v, BTimeout timeoutUs=BTimeoutForever)
Wait until value is equal to or below the value given.
Definition BCondInt.cpp:117
BCondInt()
Definition BCondInt.cpp:26
void operator+=(int v)
Add to value. Wakes waiting.
Definition BCondInt.h:42
Resource lock.
Definition BCondInt.h:165
int inUse()
Definition BCondInt.cpp:536
int locked()
Definition BCondInt.cpp:532
BCondResource()
Definition BCondInt.cpp:453
int start(uint32_t timeOutUs=0)
Start using the resource.
Definition BCondInt.cpp:497
int unlock()
Unlock the resource.
Definition BCondInt.cpp:487
int lock(uint32_t timeOutUs=0)
Lock the resource, will wait for all usage to be 0.
Definition BCondInt.cpp:465
~BCondResource()
Definition BCondInt.cpp:460
int end()
Finish using the resource.
Definition BCondInt.cpp:520
Thread conditional value.
Definition BCondInt.h:60
BCondValue()
Definition BCondInt.cpp:140
void operator--(int)
Decrement value. Wakes waiting.
Definition BCondInt.h:97
int waitLessThan(int v, int timeOutUs=0)
Wait until value is equal to or below the value given.
Definition BCondInt.cpp:236
int value()
Current value.
Definition BCondInt.cpp:158
~BCondValue()
Definition BCondInt.cpp:146
void operator-=(int v)
Subtract from value. Wakes waiting.
Definition BCondInt.h:89
void operator+=(int v)
Add to value. Wakes waiting.
Definition BCondInt.h:85
void operator++(int)
Increment value. Wakes waiting.
Definition BCondInt.h:93
int waitMoreThanOrEqual(int v, int decrement=0, int timeOutUs=0)
Wait until value is at least the value given.
Definition BCondInt.cpp:184
void setValue(int value)
Set the value. Wakes waiting.
Definition BCondInt.cpp:151
int waitLessThanOrEqual(int v, int increment=0, int timeOutUs=0)
Wait until value is equal to or below the value given.
Definition BCondInt.cpp:210
int decrement(int v=1)
Decrement. Wakes waiting.
Definition BCondInt.cpp:173
int increment(int v=1)
Increment. Wakes waiting.
Definition BCondInt.cpp:162
Thread conditional unsigned 32 bit integer value that can wrap around.
Definition BCondInt.h:121
int waitLessThanOrEqual(uint32_t v, uint32_t increment=0, uint32_t timeOutUs=0)
Wait until value is equal to or below the value given.
Definition BCondInt.cpp:399
int waitMoreThanOrEqual(uint32_t v, uint32_t decrement=0, uint32_t timeOutUs=0)
Wait until value is at least the value given.
Definition BCondInt.cpp:373
int waitLessThan(uint32_t v, uint32_t timeOutUs=0)
Wait until value is equal to or below the value given.
Definition BCondInt.cpp:425
void operator--(int)
Decrement value. Wakes waiting.
Definition BCondInt.h:160
BCondWrap()
Definition BCondInt.cpp:329
uint32_t increment(uint32_t v=1)
Increment. Wakes waiting.
Definition BCondInt.cpp:351
void operator++(int)
Increment value. Wakes waiting.
Definition BCondInt.h:156
~BCondWrap()
Definition BCondInt.cpp:335
void operator-=(int v)
Subtract from value. Wakes waiting.
Definition BCondInt.h:152
uint32_t value()
Current value.
Definition BCondInt.cpp:347
void operator+=(int v)
Add to value. Wakes waiting.
Definition BCondInt.h:148
uint32_t decrement(uint32_t v=1)
Decrement. Wakes waiting.
Definition BCondInt.cpp:362
void setValue(uint32_t value)
Set the value. Wakes waiting.
Definition BCondInt.cpp:340