File: shared_mem.h

package info (click to toggle)
fakeroot-ng 0.16-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 940 kB
  • ctags: 580
  • sloc: sh: 3,746; cpp: 3,527; ansic: 1,408; makefile: 66
file content (35 lines) | stat: -rw-r--r-- 878 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#ifndef SHARED_MEM_H
#define SHARED_MEM_H

class shared_mem {
    static size_t shared_mem_size; // Size of shared memory allocations

    struct data {
        void *local_pointer;
        int reference_count;
        // Wait list
        pid_t wait_next, wait_prev;
    } *data;

    // Who else shares this memory?
    pid_t mem_next, mem_prev, us;

    void release();

public:
    shared_mem();
    ~shared_mem();
    shared_mem( const shared_mem &rhs );
    explicit shared_mem( void *ptr );
    static void init_size( size_t size );
    shared_mem &operator =( const shared_mem &rhs );

    void *get() const { return data!=NULL ? data->local_pointer : NULL; }
    char *getc() const { return (char *)get(); }
    void set_pid( pid_t pid ) { us=pid; }

    // Casts
    operator bool() const { return data!=NULL && data->local_pointer!=NULL; }
};

#endif // SHARED_MEM_H