service: add sort of servicelist including all required layers
[enigma2.git] / lib / base / elock.h
1 #ifndef __elock_h
2 #define __elock_h
3
4 #include <pthread.h>
5
6 class singleLock
7 {
8         pthread_mutex_t &lock;
9 public:
10         singleLock( pthread_mutex_t &m )
11                 :lock(m)
12         {
13                 pthread_mutex_lock(&lock);
14         }
15         ~singleLock()
16         {
17                 pthread_mutex_unlock(&lock);
18         }
19 };
20
21 class eLock
22 {
23         pthread_mutex_t mutex;
24         pthread_cond_t cond;
25
26         int pid;
27         int counter, max;
28 public:
29         void lock(int res=100);
30         void unlock(int res=100);
31
32         eLock(int max=100);
33         ~eLock();
34 };
35
36 class eLocker
37 {
38         eLock &lock;
39         int res;
40 public:
41         eLocker(eLock &lock, int res=100);
42         ~eLocker();
43 };
44
45 class eSemaphore
46 {
47         int v;
48         pthread_mutex_t mutex;
49         pthread_cond_t cond;
50 public:
51         eSemaphore();
52         ~eSemaphore();
53         
54         int down();
55         int decrement();
56         int up();
57         int value();
58 };
59
60 #endif