git-svn-id: svn://db.shs.com.ru/pip@484 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2017-04-28 11:28:42 +00:00
parent 777b91667e
commit edddfb12b1

View File

@@ -109,15 +109,13 @@ bool PISharedMemory::openDevice() {
//piCout << PRIVATE->map << PRIVATE->data; //piCout << PRIVATE->map << PRIVATE->data;
#endif #endif
#ifdef LINUX #ifdef LINUX
int m = O_RDWR;
if (!isWriteable()) m = O_RDONLY;
PRIVATE->name = ("/pip_shm_" + path()).toByteArray(); PRIVATE->name = ("/pip_shm_" + path()).toByteArray();
PRIVATE->name.push_back(0); PRIVATE->name.push_back(0);
int fd = shm_open((const char *)PRIVATE->name.data(), m, 0777); int fd = shm_open((const char *)PRIVATE->name.data(), O_RDWR, 0777);
//piCoutObj << "try open" << PICoutManipulators::Hex << fd; //piCoutObj << "try open" << PICoutManipulators::Hex << fd;
if (fd < 0) { if (fd < 0) {
//piCoutObj << "shm_open error," << errorString(); //piCoutObj << "shm_open error," << errorString();
fd = shm_open((const char *)PRIVATE->name.data(), m | O_CREAT, 0777); fd = shm_open((const char *)PRIVATE->name.data(), O_RDWR | O_CREAT, 0777);
//piCoutObj << "try create" << PICoutManipulators::Hex << (m | O_CREAT) << fd; //piCoutObj << "try create" << PICoutManipulators::Hex << (m | O_CREAT) << fd;
if (fd < 0) { if (fd < 0) {
//piCoutObj << "shm_open error," << errorString(); //piCoutObj << "shm_open error," << errorString();
@@ -127,11 +125,9 @@ bool PISharedMemory::openDevice() {
ftruncate(fd, dsize); ftruncate(fd, dsize);
//piCoutObj << "created" << fd; //piCoutObj << "created" << fd;
} }
m = PROT_WRITE; PRIVATE->data = mmap(0, dsize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
if (!isWriteable()) m = PROT_READ;
PRIVATE->data = mmap(0, dsize, m, MAP_SHARED, fd, 0);
::close(fd); ::close(fd);
if (!PRIVATE->data) { if (PRIVATE->data == MAP_FAILED) {
piCoutObj << "mmap error," << errorString(); piCoutObj << "mmap error," << errorString();
return false; return false;
} }