WvStreams
|
00001 /* 00002 * Worldvisions Weaver Software: 00003 * Copyright (C) 1997-2002 Net Integration Technologies, Inc. 00004 * 00005 * A shared-memory zone via mmap(). See wvshmzone.h. 00006 */ 00007 #include "wvshmzone.h" 00008 #include <sys/mman.h> 00009 #include <sys/types.h> 00010 #include <sys/stat.h> 00011 #include <fcntl.h> 00012 #include <assert.h> 00013 #include <errno.h> 00014 #include <unistd.h> 00015 00016 WvShmZone::WvShmZone(size_t _size) 00017 { 00018 size = (int)_size; 00019 assert(size > 0); 00020 00021 buf = NULL; 00022 00023 fd = open("/dev/zero", O_RDWR); 00024 if (fd < 0) 00025 { 00026 seterr(errno); 00027 return; 00028 } 00029 00030 buf = mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); 00031 00032 if (!buf) 00033 { 00034 seterr(errno); 00035 return; 00036 } 00037 } 00038 00039 00040 WvShmZone::~WvShmZone() 00041 { 00042 if (buf) 00043 munmap(buf, size); 00044 if (fd >= 0) 00045 close(fd); 00046 } 00047 00048