HDK
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
UT_SharedMem.h
Go to the documentation of this file.
1
/*
2
* PROPRIETARY INFORMATION. This software is proprietary to
3
* Side Effects Software Inc., and is not to be reproduced,
4
* transmitted, or disclosed in any way without written permission.
5
*
6
* NAME: UT_SharedMem.h (C++)
7
*
8
* COMMENTS:
9
* Typical use is as follows:
10
*
11
* UT_SharedMem ipc(IPC_PATHNAME);
12
* void *mem;
13
*
14
* if( !(mem = ipc.getMemory()) )
15
* {
16
* ipc.setSize(SHARED_MEM_SIZE);
17
* mem = ipc.getMemory();
18
* if( !mem ) abortOrSomething();
19
* }
20
*
21
*
22
*
23
*/
24
#ifndef __UT_SharedMem__
25
#define __UT_SharedMem__
26
27
#include "
UT_API.h
"
28
#include <sys/types.h>
29
#include "
UT_String.h
"
30
31
#ifdef WIN32
32
typedef
void
* key_t;
33
#endif
34
35
class
UT_API
UT_SharedMem
36
{
37
public
:
38
//
39
// This constructor is for using non-private shared memory segments
40
// and will create a shared memory key using the path and the id value.
41
// The named file should exist and is used only to create a unique
42
// shared memory key. "size" is the size of the shared memory segment
43
// in bytes. If size is non-zero this object will try to create the
44
// memory, otherwise it is assumed to already exist. If no arguments
45
// are given then the user must later call setKey and setSize for public
46
// memory or just setSize for private.
47
//
48
explicit
UT_SharedMem
(
const
char
*keypath=0,
int
size
=0,
int
keyid=0);
49
50
//
51
// This constructor is for using non-private shared memory segments
52
// with a given key. If size is non-zero this object will try to
53
// create the memory, otherwise it is assumed to already exist.
54
//
55
UT_SharedMem
(key_t key,
int
size
);
56
57
//
58
// This constructor will create a private shared memory segment.
59
//
60
explicit
UT_SharedMem
(
int
size);
61
62
//
63
// The destructor will detach the shared memory segment and if we
64
// were the creators it will also delete the segment.
65
//
66
virtual
~
UT_SharedMem
();
67
68
UT_SharedMem
(
const
UT_SharedMem
&) =
delete
;
69
UT_SharedMem
&operator=(
const
UT_SharedMem
&) =
delete
;
70
71
//
72
// setKey will return 1 upon success and 0 upon failure.
73
// It will only fail if the memory is already attached.
74
//
75
int
setKey(
const
char
*
path
,
int
id
=0);
76
int
setKey(key_t key);
77
#ifdef WIN32
78
int
setKey(
int
key);
79
#endif
80
81
//
82
// setSize will return 1 upon success and 0 upon failure.
83
// It will only fail if the memory is already attached.
84
//
85
int
setSize(
int
size);
86
87
//
88
// detach will disassociate the shared memory segment from this process.
89
// It returns 1 upon success and 0 if there was no memory to detach.
90
//
91
int
detach();
92
93
//
94
// destroy will detach from the memory and then attempt to remove the
95
// shared memory segment from the system.
96
//
97
int
destroy();
98
99
//
100
// getMemory will return a pointer to the shared memory segment.
101
// If this method returns zero then the global "errno" should indicate
102
// the reason for the failure.
103
//
104
virtual
void
*getMemory(
int
reuse = 1 );
105
106
107
protected
:
108
UT_String
ourKeyPath
;
109
int
ourKeyId
;
110
111
private
:
112
int
mySize;
113
key_t myShmKey;
114
key_t myShmId;
115
void
*myMemory;
116
};
117
118
#endif
/* __UT_SharedMem__ */
path
GLsizei const GLchar *const * path
Definition:
glcorearb.h:3341
UT_API.h
UT_API
#define UT_API
Definition:
UT_API.h:14
UT_String.h
UT_SharedMem::ourKeyId
int ourKeyId
Definition:
UT_SharedMem.h:109
size
GLsizeiptr size
Definition:
glcorearb.h:664
UT_SharedMem::ourKeyPath
UT_String ourKeyPath
Definition:
UT_SharedMem.h:108
UT_SharedMem
Definition:
UT_SharedMem.h:35
UT_String
Definition:
UT_String.h:73
UT
UT_SharedMem.h
Generated on Thu May 9 2024 03:17:12 for HDK by
1.8.6