Belle II Software  release-06-02-00
SharedMem.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 #ifndef SHAREDMEM_H
9 #define SHAREDMEM_H
10 
11 #include <sys/types.h>
12 
13 #include <string>
14 
15 namespace Belle2 {
20  class SharedMem {
21  public:
22  SharedMem(const char* name, int size);
23  SharedMem(int shm_id);
24  SharedMem(int shm_id, int sem_id, int size);
25  ~SharedMem(void);
26 
27  void* ptr(void);
28  int shmid(void);
29 
30  bool IsCreated(void);
31 
32  void lock();
33  void unlock();
34  bool isLocked();
35 
36  private:
37  bool m_new;
38  bool m_file;
39  std::string m_pathname;
40  int m_pathfd;
41  key_t m_shmkey;
42  key_t m_semkey;
44  int m_shmid;
45  int m_semid;
46  void* m_shmadr;
47  int m_shmsize;
48  char* m_strbuf;
49  };
51 }
52 
53 #endif
54 
key_t m_shmkey
Associated file descriptor.
Definition: SharedMem.h:41
bool m_new
True if we created the ring buffer ourselves (and need to clean it).
Definition: SharedMem.h:37
key_t m_semkey
Semaphore key.
Definition: SharedMem.h:42
Abstract base class for different kinds of events.