#include <shm.hh>
Collaboration diagram for RCS_SHAREDMEM:
Public Methods | |
RCS_SHAREDMEM (key_t key, size_t size, int oflag, int mode=0) | |
~RCS_SHAREDMEM () | |
int | nattch () |
Data Fields | |
int | create_errno |
void * | addr |
int | delete_totally |
int | created |
Private Methods | |
RCS_SHAREDMEM (RCS_SHAREDMEM &shm) | |
Private Attributes | |
shm_t * | shm |
|
Definition at line 32 of file shm.cc. 00033 { 00034 shm = NULL; 00035 addr = NULL; 00036 delete_totally = 0; 00037 create_errno = 0; 00038 created = 0; 00039 00040 if (oflag & RCS_SHAREDMEM_CREATE) 00041 { 00042 /* create shared memory */ 00043 #if defined(VXWORKS) || defined(_Windows) 00044 shm = rcs_shm_open (key, size, 1); 00045 #else 00046 #ifdef USE_POSIX_SHAREDMEM 00047 shm = rcs_shm_open (key, size, O_CREAT, mode); 00048 #else 00049 shm = rcs_shm_open (key, size, IPC_CREAT, mode); 00050 #endif 00051 #endif 00052 if (shm == NULL) 00053 { 00054 create_errno = errno; 00055 rcs_print_error ("can't create shared memory\n"); 00056 return; 00057 } 00058 } 00059 else 00060 { 00061 /* attach to existing shared memory */ 00062 shm = rcs_shm_open (key, size, 0); 00063 if (shm == NULL) 00064 { 00065 create_errno = errno; 00066 rcs_print_error 00067 ("can't attach to shared memory-- is master started?\n"); 00068 return; 00069 } 00070 } 00071 create_errno = shm->create_errno; 00072 created = shm->created; 00073 /* duplicate the pointer, so users don't 00074 have to dig into shm->addr */ 00075 addr = shm->addr; 00076 } |
|
Definition at line 78 of file shm.cc. 00079 { 00080 if (shm == NULL) 00081 { 00082 return; 00083 } 00084 else 00085 { 00086 if (delete_totally) 00087 { 00088 rcs_shm_delete (shm); 00089 } 00090 else 00091 { 00092 rcs_shm_close (shm); 00093 } 00094 shm = NULL; 00095 } 00096 } |
|
Definition at line 112 of file shm.cc. 00113 { 00114 } |
|
Definition at line 99 of file shm.cc. Referenced by SHMEM::close().
00100 { 00101 if (shm == NULL) 00102 { 00103 return -1; 00104 } 00105 else 00106 { 00107 return rcs_shm_nattch (shm); 00108 } 00109 } |
|
Definition at line 121 of file shm.hh. Referenced by SHMEM::open().
|
|
Definition at line 122 of file shm.hh. Referenced by SHMEM::close(), SHMEM::main_access(), and SHMEM::open().
|
|
Definition at line 123 of file shm.hh. Referenced by SHMEM::close().
|
|
|
|
Definition at line 128 of file shm.hh. Referenced by SHMEM::open().
|