mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-06 18:10:40 +02:00
slsDetectorSoftware: Sharedmemory removed private methodf or removeshm, removed static isexisting as the usecases are all member method
This commit is contained in:
parent
7c29327b47
commit
ecd0c810ca
@ -621,8 +621,8 @@ void multiSlsDetector::freeSharedMemory(int multiId) {
|
|||||||
int numDetectors = 0;
|
int numDetectors = 0;
|
||||||
SharedMemory* shm = new SharedMemory(multiId, -1);
|
SharedMemory* shm = new SharedMemory(multiId, -1);
|
||||||
|
|
||||||
// shm not created before
|
// get number of detectors from multi shm
|
||||||
if (SharedMemory::IsExisting(shm->GetName())) {
|
if (shm->IsExisting()) {
|
||||||
sharedMultiSlsDetector* mdet = (sharedMultiSlsDetector*)shm->OpenSharedMemory(
|
sharedMultiSlsDetector* mdet = (sharedMultiSlsDetector*)shm->OpenSharedMemory(
|
||||||
sizeof(sharedMultiSlsDetector));
|
sizeof(sharedMultiSlsDetector));
|
||||||
numDetectors = mdet->numberOfDetectors;
|
numDetectors = mdet->numberOfDetectors;
|
||||||
@ -715,7 +715,7 @@ bool multiSlsDetector::initSharedMemory(bool verify) {
|
|||||||
|
|
||||||
bool created = false;
|
bool created = false;
|
||||||
sharedMemory = new SharedMemory(detId, -1);
|
sharedMemory = new SharedMemory(detId, -1);
|
||||||
if (SharedMemory::IsExisting(sharedMemory->GetName())) {
|
if (sharedMemory->IsExisting()) {
|
||||||
thisMultiDetector = (sharedMultiSlsDetector*)sharedMemory->OpenSharedMemory(sz);
|
thisMultiDetector = (sharedMultiSlsDetector*)sharedMemory->OpenSharedMemory(sz);
|
||||||
if (verify && thisMultiDetector->shmversion != MULTI_SHMVERSION) {
|
if (verify && thisMultiDetector->shmversion != MULTI_SHMVERSION) {
|
||||||
cprintf(RED, "Multi shared memory (%d) version mismatch "
|
cprintf(RED, "Multi shared memory (%d) version mismatch "
|
||||||
|
@ -28,13 +28,13 @@ SharedMemory::~SharedMemory(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SharedMemory::IsExisting(std::string name) {
|
bool SharedMemory::IsExisting() {
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
int fd = shm_open(name.c_str(), O_RDWR, 0);
|
int tempfd = shm_open(name.c_str(), O_RDWR, 0);
|
||||||
if ((fd < 0) && (errno == ENOENT)) {
|
if ((tempfd < 0) && (errno == ENOENT)) {
|
||||||
ret = false;
|
ret = false;
|
||||||
}
|
}
|
||||||
close(fd);
|
close(tempfd);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,7 +61,9 @@ void* SharedMemory::CreateSharedMemory(size_t sz){
|
|||||||
}
|
}
|
||||||
|
|
||||||
// map
|
// map
|
||||||
return MapSharedMemory(sz);
|
void* addr = MapSharedMemory(sz);
|
||||||
|
printf("Shared memory created %s \n", name.c_str());
|
||||||
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* SharedMemory::OpenSharedMemory(size_t sz){
|
void* SharedMemory::OpenSharedMemory(size_t sz){
|
||||||
@ -87,7 +89,15 @@ void SharedMemory::UnmapSharedMemory(void* addr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SharedMemory::RemoveSharedMemory() {
|
void SharedMemory::RemoveSharedMemory() {
|
||||||
RemoveSharedMemory(name.c_str());
|
if (shm_unlink(name.c_str()) < 0) {
|
||||||
|
// silent exit if shm did not exist anyway
|
||||||
|
if (errno == ENOENT)
|
||||||
|
return;
|
||||||
|
cprintf(RED, "Error: Free Shared Memory %s Failed: %s\n",
|
||||||
|
name.c_str(), strerror(errno));
|
||||||
|
throw SharedMemoryException();
|
||||||
|
}
|
||||||
|
printf("Shared memory deleted %s \n", name.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -146,15 +156,3 @@ int SharedMemory::VerifySizeMatch(size_t expectedSize) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SharedMemory::RemoveSharedMemory(std::string name) {
|
|
||||||
if (shm_unlink(name.c_str()) < 0) {
|
|
||||||
// silent exit if shm did not exist anyway
|
|
||||||
if (errno == ENOENT)
|
|
||||||
return;
|
|
||||||
cprintf(RED, "Error: Free Shared Memory %s Failed: %s\n",
|
|
||||||
name.c_str(), strerror(errno));
|
|
||||||
throw SharedMemoryException();
|
|
||||||
}
|
|
||||||
printf("Shared memory deleted %s \n", name.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ public:
|
|||||||
* @param name of shared memory
|
* @param name of shared memory
|
||||||
* @return true if exists, else false
|
* @return true if exists, else false
|
||||||
*/
|
*/
|
||||||
static bool IsExisting(std::string name);
|
bool IsExisting();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get shared memory name
|
* Get shared memory name
|
||||||
@ -93,12 +93,6 @@ private:
|
|||||||
*/
|
*/
|
||||||
int VerifySizeMatch(size_t expectedSize);
|
int VerifySizeMatch(size_t expectedSize);
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove existing Shared memory
|
|
||||||
* @param name name of shared memory (should be less than NAME_MAX)
|
|
||||||
*/
|
|
||||||
void RemoveSharedMemory(std::string name);
|
|
||||||
|
|
||||||
/** Shared memory name */
|
/** Shared memory name */
|
||||||
std::string name;
|
std::string name;
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ slsDetector::slsDetector(detectorType type, int multiId, int id, bool verify, mu
|
|||||||
|
|
||||||
// ensure shared memory was not created before
|
// ensure shared memory was not created before
|
||||||
SharedMemory* shm = new SharedMemory(multiId, id);
|
SharedMemory* shm = new SharedMemory(multiId, id);
|
||||||
if (SharedMemory::IsExisting(shm->GetName())) {
|
if (shm->IsExisting()) {
|
||||||
cprintf(YELLOW BOLD,"Warning: Weird, this shared memory should have been "
|
cprintf(YELLOW BOLD,"Warning: Weird, this shared memory should have been "
|
||||||
"deleted before! %s. Freeing it again.\n", shm->GetName().c_str());
|
"deleted before! %s. Freeing it again.\n", shm->GetName().c_str());
|
||||||
freeSharedMemory(multiId, id);
|
freeSharedMemory(multiId, id);
|
||||||
@ -1250,7 +1250,7 @@ int slsDetector::receiveModule(sls_detector_module* myMod) {
|
|||||||
slsReceiverDefs::detectorType slsDetector::getDetectorTypeFromShm(int multiId, bool verify) {
|
slsReceiverDefs::detectorType slsDetector::getDetectorTypeFromShm(int multiId, bool verify) {
|
||||||
SharedMemory* shm = new SharedMemory(multiId, detId);
|
SharedMemory* shm = new SharedMemory(multiId, detId);
|
||||||
// shm not created before
|
// shm not created before
|
||||||
if (!SharedMemory::IsExisting(shm->GetName())) {
|
if (!shm->IsExisting()) {
|
||||||
cprintf(RED,"Shared memory %s does not exist.\n"
|
cprintf(RED,"Shared memory %s does not exist.\n"
|
||||||
"Corrupted Multi Shared memory. Please free shared memory.\n",
|
"Corrupted Multi Shared memory. Please free shared memory.\n",
|
||||||
shm->GetName().c_str());
|
shm->GetName().c_str());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user