WvStreams
wvshmzone.cc
1/*
2 * Worldvisions Weaver Software:
3 * Copyright (C) 1997-2002 Net Integration Technologies, Inc.
4 *
5 * A shared-memory zone via mmap(). See wvshmzone.h.
6 */
7#include "wvshmzone.h"
8#include <sys/mman.h>
9#include <sys/types.h>
10#include <sys/stat.h>
11#include <fcntl.h>
12#include <assert.h>
13#include <errno.h>
14#include <unistd.h>
15
17{
18 size = (int)_size;
19 assert(size > 0);
20
21 buf = NULL;
22
23 fd = open("/dev/zero", O_RDWR);
24 if (fd < 0)
25 {
26 seterr(errno);
27 return;
28 }
29
30 buf = mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
31
32 if (!buf)
33 {
34 seterr(errno);
35 return;
36 }
37}
38
39
40WvShmZone::~WvShmZone()
41{
42 if (buf)
43 munmap(buf, size);
44 if (fd >= 0)
45 close(fd);
46}
47
48
virtual void seterr(int _errnum)
Set the errnum variable – we have an error.
Definition: wverror.cc:144
WvShmZone(size_t size)
Creates a shared memory zone.
Definition: wvshmzone.cc:16