// Copyright (c) 2002 David Muse
// See the COPYING file for more information
#include <rudiments/shmfile.h>
#include <rudiments/error.h>
#include <sys/types.h>
#include <sys/mman.h>
#ifdef RUDIMENTS_NAMESPACE
namespace rudiments {
#endif
class shmfileprivate {
friend class shmfile;
private:
};
shmfile::shmfile() : file() {
pvt=new shmfileprivate;
type("shmfile");
}
shmfile::shmfile(const shmfile &s) : file(s) {
pvt=new shmfileprivate;
type("shmfile");
}
shmfile &shmfile::operator=(const shmfile &s) {
if (this!=&s) {
file::operator=(s);
}
return *this;
}
shmfile::~shmfile() {
delete pvt;
}
int shmfile::openInternal(const char *name, int flags) {
int result;
do {
result=shm_open(name,flags,0);
} while (result==-1 && error::getErrorNumber()==EINTR);
return result;
}
int shmfile::openInternal(const char *name, int flags, mode_t perms) {
int result;
do {
result=shm_open(name,flags,perms);
} while (result==-1 && error::getErrorNumber()==EINTR);
return result;
}
bool shmfile::remove(const char *filename) {
int result;
do {
result=shm_unlink(filename);
} while (result==-1 && error::getErrorNumber()==EINTR);
return !result;
}
#ifdef RUDIMENTS_NAMESPACE
}
#endif
syntax highlighted by Code2HTML, v. 0.9.1