Statistics
| Branch: | Revision:

root / synthbench / bonnie++ / .svn / text-base / semaphore.h.svn-base @ 0:839f52ef7657

History | View | Annotate | Download (1.1 kB)

1
#ifndef SEMAPHORE_H
2
#define SEMAPHORE_H
3

    
4
#include <sys/types.h>
5
#include <sys/ipc.h>
6
#include <sys/sem.h>
7

    
8
#ifndef SEMUN_IN_SEM_H
9
union semun
10
{
11
  int val;                    /* value for SETVAL */
12
  struct semid_ds *buf;       /* buffer for IPC_STAT, IPC_SET */
13
  unsigned short int *array;  /* array for GETALL, SETALL */
14
  struct seminfo *__buf;      /* buffer for IPC_INFO */
15
};
16
#endif
17

    
18
class Semaphore
19
{
20
public:
21

    
22
  // numSems is the number of semaphores to be in the set
23
  // semKey is the ID number for the semaphore set
24
  // val is the initial value for the semaphores, no values will be assigned
25
  // if the default (0) is specified.
26
  Semaphore(int semKey, int numSems = 1, int val = 0);
27

    
28
  // clear the semaphores and return an error code.
29
  int clear_sem();
30

    
31
  // create the semaphores
32
  // count is the initial value assigned to each semaphore
33
  int create(int count);
34

    
35
  // get the handle to a semaphore set previously created
36
  int get_semid();
37

    
38
  int decrement_and_wait(int nr_sem);
39
  int get_mutex();
40
  int put_mutex();
41

    
42
private:
43
  union semun m_arg;
44
  int m_semid;
45
  int m_semflg;
46
  bool m_semopen;
47
  int m_semKey;
48
  int m_numSems;
49
};
50

    
51
#endif
52