|
From: <jsa...@us...> - 2008-06-06 19:46:16
|
Revision: 1255
http://como.svn.sourceforge.net/como/?rev=1255&view=rev
Author: jsanjuas
Date: 2008-06-06 12:46:06 -0700 (Fri, 06 Jun 2008)
Log Message:
-----------
merged shmem_create into supervisor and removed unused code.
Modified Paths:
--------------
src/branches/2.0/base/CMakeLists.txt
src/branches/2.0/base/shmem.c
src/branches/2.0/base/supervisor.c
src/branches/2.0/include/como.h
src/branches/2.0/include/comopriv.h
Removed Paths:
-------------
src/branches/2.0/include/shmem.h
Modified: src/branches/2.0/base/CMakeLists.txt
===================================================================
--- src/branches/2.0/base/CMakeLists.txt 2008-06-04 23:32:23 UTC (rev 1254)
+++ src/branches/2.0/base/CMakeLists.txt 2008-06-06 19:46:06 UTC (rev 1255)
@@ -32,7 +32,6 @@
radio.c
services.c
setproctitle.c
- shmem.c
shobj.c
sniffers.c
socket.c
Modified: src/branches/2.0/base/shmem.c
===================================================================
--- src/branches/2.0/base/shmem.c 2008-06-04 23:32:23 UTC (rev 1254)
+++ src/branches/2.0/base/shmem.c 2008-06-06 19:46:06 UTC (rev 1255)
@@ -62,278 +62,9 @@
#ifndef MAP_NOSYNC
#define MAP_NOSYNC 0
#endif
-#ifndef SHM_R
-#define SHM_R 0400
-#endif
-#ifndef SHM_W
-#define SHM_W 0200
-#endif
/* Not all systems seem to have MAP_FAILED defined, but it should always
* just be (void *)-1. */
#ifndef MAP_FAILED
#define MAP_FAILED ((void *)-1)
#endif
-
-struct shmem {
- void * base; /* base real address */
- void * usable; /* base usable address */
- size_t reqsize; /* requested segment size */
- size_t realsize; /* actual segment size */
- char * filename; /* NULL if anonymous */
- int shmid; /* shmem ID returned from shmget() */
-};
-
-
-shmem_t *
-shmem_create(size_t reqsize, const char * filename)
-{
- shmem_t *new_m;
-
- new_m = como_new0(shmem_t);
- new_m->reqsize = reqsize;
-
- if (filename == NULL) {
- /* Anonymous shared memory */
- new_m->reqsize = reqsize;
- new_m->realsize = reqsize +
- ALIGN_DEFAULT(sizeof(size_t)); /* room for metadata */
- new_m->filename = NULL;
-
- new_m->base = mmap(NULL, new_m->realsize, PROT_READ|PROT_WRITE,
- MAP_ANON|MAP_NOSYNC|MAP_SHARED, -1, 0);
- if (new_m->base == (void *)MAP_FAILED) {
- goto error;
- }
-
- /* store the real size in the metadata */
- *((size_t *) new_m->base) = new_m->realsize;
- /* metadata isn't usable */
- new_m->usable = new_m->base + ALIGN_DEFAULT(sizeof(size_t));
-
- notice("allocated %lu of mapped memory\n", reqsize);
- } else {
- /* Name-based shared memory */
- int fd;
- ssize_t r;
- struct shmid_ds shmbuf;
- key_t shmkey;
-
- new_m->realsize = reqsize;
- new_m->filename = safe_strdup(filename);
-
- fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0600);
- if (fd < 0) {
- goto error;
- }
-
- /* ftok() (on solaris at least) requires that the file actually
- * exist before calling ftok(). */
- shmkey = ftok(filename, 1);
- if (shmkey == (key_t)-1) {
- goto error;
- }
-
- new_m->shmid = shmget(shmkey, new_m->realsize,
- SHM_R | SHM_W | IPC_CREAT | IPC_EXCL);
- if (new_m->shmid < 0) {
- goto error;
- }
-
- new_m->base = shmat(new_m->shmid, NULL, 0);
- if (new_m->base == (void *)-1) {
- goto error;
- }
- new_m->usable = new_m->base;
-
- if (shmctl(new_m->shmid, IPC_STAT, &shmbuf) == -1) {
- goto error;
- }
- shmbuf.shm_perm.uid = getuid();
- shmbuf.shm_perm.gid = getgid();
- if (shmctl(new_m->shmid, IPC_SET, &shmbuf) == -1) {
- goto error;
- }
-
- r = write(fd, &reqsize, sizeof(reqsize));
- if (r == -1) {
- goto error;
- }
- r = close(fd);
- if (r == -1) {
- goto error;
- }
- }
-
- return new_m;
-error:
- warn("shmem_create(): %s\n", strerror(errno));
- free(new_m);
- return NULL;
-}
-
-
-int
-shmem_remove(const char * filename)
-{
- int fd;
- key_t shmkey;
- int shmid;
-
- /* Presume that the file already exists; just open for writing */
- fd = open(filename, O_WRONLY);
- if (fd < 0) {
- goto error;
- }
-
- /* ftok() (on solaris at least) requires that the file actually
- * exist before calling ftok(). */
- shmkey = ftok(filename, 1);
- if (shmkey == (key_t)-1) {
- goto error;
- }
-
- close(fd);
- fd = -1;
-
- if ((shmid = shmget(shmkey, 0, SHM_R | SHM_W)) < 0) {
- goto error;
- }
-
- /* Indicate that the segment is to be destroyed as soon
- * as all processes have detached. This also disallows any
- * new attachments to the segment. */
- if (shmctl(shmid, IPC_RMID, NULL) == -1) {
- goto error;
- }
- return unlink(filename);
-
-error:
- debug("shmem_remove(): %s\n", strerror(errno));
- if (fd != -1)
- close(fd);
- /* ensure the file has been removed anyway. */
- unlink(filename);
- return -1;
-}
-
-int
-shmem_destroy(shmem_t * m)
-{
- /* anonymous shared memory */
- if (m->filename == NULL) {
- if (munmap(m->base, m->realsize) == -1) {
- warn("munmap(): %s\n", strerror(errno));
- return -1;
- }
- free(m);
- return 0;
- } else {
- /* name-based shared memory */
- /* Indicate that the segment is to be destroyed as soon
- * as all processes have detached. This also disallows any
- * new attachments to the segment. */
- if (shmctl(m->shmid, IPC_RMID, NULL) == -1) {
- warn("shmctl(): %s\n", strerror(errno));
- return -1;
- }
- if (shmdt(m->base) == -1) {
- warn("shmdt(): %s\n", strerror(errno));
- return -1;
- }
- free(m);
- return unlink(m->filename);
- }
-}
-
-
-shmem_t *
-shmem_attach(const char * filename, void *base_addr)
-{
- shmem_t *new_m;
- int fd; /* file where metadata is stored */
- ssize_t r;
- key_t shmkey;
-
- if (filename == NULL) {
- /* It doesn't make sense to attach to a segment if you don't know
- * the filename. */
- return NULL;
- }
-
- new_m = como_new0(shmem_t);
-
- fd = open(filename, O_RDWR);
- if (fd < 0) {
- goto error;
- }
-
- r = read(fd, &(new_m->reqsize), sizeof(new_m->reqsize));
- if (r == -1) {
- goto error;
- }
- r = close(fd);
- if (r == -1) {
- goto error;
- }
-
- new_m->filename = safe_strdup(filename);
- shmkey = ftok(filename, 1);
- if (shmkey == (key_t)-1) {
- goto error;
- }
-
- new_m->shmid = shmget(shmkey, 0, SHM_R | SHM_W);
- if (new_m->shmid == -1) {
- goto error;
- }
-
- new_m->base = shmat(new_m->shmid, base_addr, 0);
- if (new_m->base == (void *)-1) {
- debug("shmat() error - %s\n", strerror(errno));
- goto error;
- }
-
- new_m->usable = new_m->base;
- new_m->realsize = new_m->reqsize;
-
- return new_m;
-error:
- warn("shmem_attach(): %s\n", strerror(errno));
- free(new_m);
- return NULL;
-}
-
-
-int
-shmem_detach(shmem_t * m)
-{
- /* It doesn't make sense to detach from an anonymous memory segment. */
- if (m->filename != NULL) {
- if (shmdt(m->base) == -1) {
- warn("shmdt(): %s\n", strerror(errno));
- return -1;
- }
- }
-
- return 0;
-}
-
-void *
-shmem_baseaddr(const shmem_t * m)
-{
- return m->usable;
-}
-
-size_t
-shmem_size(const shmem_t * m)
-{
- return m->reqsize;
-}
-
-const char *
-shmem_filename(const shmem_t * m)
-{
- return m->filename;
-}
-
Modified: src/branches/2.0/base/supervisor.c
===================================================================
--- src/branches/2.0/base/supervisor.c 2008-06-04 23:32:23 UTC (rev 1254)
+++ src/branches/2.0/base/supervisor.c 2008-06-06 19:46:06 UTC (rev 1255)
@@ -40,7 +40,9 @@
#include <assert.h>
#include <sys/stat.h> /* mkdir */
#include <sys/types.h> /* mkdir */
+#include <sys/mman.h> /* mmap */
+
#define LOG_DEBUG_DISABLE
#include "como.h"
#include "comopriv.h"
@@ -710,7 +712,7 @@
dd, hh, mm, ss,
(unsigned int)mem_stats->usage/(1024*1024),
(unsigned int)mem_stats->peak/(1024*1024),
- shmem_size(como_su->shmem)/(1024*1024),
+ como_su->shmem_size / (1024 * 1024),
como_stats->table_queue,
como_stats->pkts,
como_stats->drops,
@@ -911,7 +913,38 @@
}
}
+#ifndef MAP_NOSYNC
+#define MAP_NOSYNC 0
+#endif
+/* Not all systems seem to have MAP_FAILED defined, but it should always
+ * just be (void *)-1. */
+#ifndef MAP_FAILED
+#define MAP_FAILED ((void *)-1)
+#endif
+
/*
+ * -- shmem_create
+ *
+ * Creates a shared memory region
+ *
+ */
+void *
+shmem_create(size_t size)
+{
+ void *mem;
+
+ mem = mmap(NULL, size, PROT_READ|PROT_WRITE,
+ MAP_ANON|MAP_NOSYNC|MAP_SHARED, -1, 0);
+
+ if (mem == (void *)MAP_FAILED)
+ error("shmem_create(): %s\n", strerror(errno));
+ else
+ notice("allocated %lu of mapped memory\n", size);
+
+ return mem;
+}
+
+/*
* -- main
*
* set up the data structures. basically open the config file,
@@ -975,9 +1008,9 @@
* Initialize the shared memory region.
* CAPTURE and QUERY processes will be able to see it.
*/
- como_su->shmem = shmem_create(como_config->shmem_size, NULL);
- como_su->memmap = memmap_create(shmem_baseaddr(como_su->shmem),
- shmem_size(como_su->shmem), 2048);
+ como_su->shmem_size = como_config->shmem_size;
+ como_su->shmem = shmem_create(como_config->shmem_size);
+ como_su->memmap = memmap_create(como_su->shmem, como_su->shmem_size, 2048);
memmap_alc_init(como_su->memmap, &como_su->shalc);
/* allocate statistics into shared memory */
Modified: src/branches/2.0/include/como.h
===================================================================
--- src/branches/2.0/include/como.h 2008-06-04 23:32:23 UTC (rev 1254)
+++ src/branches/2.0/include/como.h 2008-06-06 19:46:06 UTC (rev 1255)
@@ -76,7 +76,6 @@
#include "comofunc.h"
#include "log.h"
#include "pool.h"
-#include "shmem.h"
#include "module.h"
void setproctitle_init(int argc, char **argv);
Modified: src/branches/2.0/include/comopriv.h
===================================================================
--- src/branches/2.0/include/comopriv.h 2008-06-04 23:32:23 UTC (rev 1254)
+++ src/branches/2.0/include/comopriv.h 2008-06-06 19:46:06 UTC (rev 1255)
@@ -399,8 +399,6 @@
ex_init_fn init;
ex_export_fn export;
- shmem_t * shmem;
-
void * state;
int running_state;
@@ -450,8 +448,10 @@
array_t * nodes; /* node information */
- shmem_t * shmem; /* main shared memory used to store
+ void * shmem; /* main shared memory used to store
capture data structures, stats */
+ size_t shmem_size;
+
memmap_t * memmap;
alc_t shalc;
Deleted: src/branches/2.0/include/shmem.h
===================================================================
--- src/branches/2.0/include/shmem.h 2008-06-04 23:32:23 UTC (rev 1254)
+++ src/branches/2.0/include/shmem.h 2008-06-06 19:46:06 UTC (rev 1255)
@@ -1,17 +0,0 @@
-#ifndef SHMEM_H_
-#define SHMEM_H_
-
-typedef struct shmem shmem_t;
-
-shmem_t * shmem_create (size_t reqsize, const char * filename);
-int shmem_destroy (shmem_t * m);
-shmem_t * shmem_attach (const char * filename, void *base_addr);
-int shmem_detach (shmem_t * m);
-void * shmem_baseaddr (const shmem_t * m);
-size_t shmem_size (const shmem_t * m);
-const char * shmem_filename (const shmem_t * m);
-
-int shmem_remove (const char *filename);
-
-
-#endif /*SHMEM_H_*/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|