summaryrefslogtreecommitdiffstats
path: root/contrib/sendmail/libsm/t-shm.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/sendmail/libsm/t-shm.c')
-rw-r--r--contrib/sendmail/libsm/t-shm.c276
1 files changed, 0 insertions, 276 deletions
diff --git a/contrib/sendmail/libsm/t-shm.c b/contrib/sendmail/libsm/t-shm.c
deleted file mode 100644
index ba0bc6c..0000000
--- a/contrib/sendmail/libsm/t-shm.c
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright (c) 2000-2002, 2004, 2005 Sendmail, Inc. and its suppliers.
- * All rights reserved.
- *
- * By using this file, you agree to the terms and conditions set
- * forth in the LICENSE file which can be found at the top level of
- * the sendmail distribution.
- */
-
-#include <sm/gen.h>
-SM_RCSID("@(#)$Id: t-shm.c,v 1.22 2005/01/14 02:14:10 ca Exp $")
-
-#include <stdio.h>
-
-#if SM_CONF_SHM
-# include <stdlib.h>
-# include <unistd.h>
-# include <sys/wait.h>
-
-# include <sm/heap.h>
-# include <sm/string.h>
-# include <sm/test.h>
-# include <sm/shm.h>
-
-# define SHMSIZE 1024
-# define SHM_MAX 6400000
-# define T_SHMKEY 21
-
-
-/*
-** SHMINTER -- interactive testing of shared memory
-**
-** Parameters:
-** owner -- create segment.
-**
-** Returns:
-** 0 on success
-** < 0 on failure.
-*/
-
-int shminter __P((bool));
-
-int
-shminter(owner)
- bool owner;
-{
- int *shm, shmid;
- int i, t;
-
- shm = (int *) sm_shmstart(T_SHMKEY, SHMSIZE, 0, &shmid, owner);
- if (shm == (int *) 0)
- {
- perror("shminit failed");
- return -1;
- }
-
- while ((t = getchar()) != EOF)
- {
- switch (t)
- {
- case 'c':
- *shm = 0;
- break;
- case 'i':
- ++*shm;
- break;
- case 'd':
- --*shm;
- break;
- case 's':
- sleep(1);
- break;
- case 'l':
- t = *shm;
- for (i = 0; i < SHM_MAX; i++)
- {
- ++*shm;
- }
- if (*shm != SHM_MAX + t)
- fprintf(stderr, "error: %d != %d\n",
- *shm, SHM_MAX + t);
- break;
- case 'v':
- printf("shmval: %d\n", *shm);
- break;
- case 'S':
- i = sm_shmsetowner(shmid, getuid(), getgid(), 0644);
- printf("sm_shmsetowner=%d\n", i);
- break;
- }
- }
- return sm_shmstop((void *) shm, shmid, owner);
-}
-
-
-/*
-** SHMBIG -- testing of shared memory
-**
-** Parameters:
-** owner -- create segment.
-** size -- size of segment.
-**
-** Returns:
-** 0 on success
-** < 0 on failure.
-*/
-
-int shmbig __P((bool, int));
-
-int
-shmbig(owner, size)
- bool owner;
- int size;
-{
- int *shm, shmid;
- int i;
-
- shm = (int *) sm_shmstart(T_SHMKEY, size, 0, &shmid, owner);
- if (shm == (int *) 0)
- {
- perror("shminit failed");
- return -1;
- }
-
- for (i = 0; i < size / sizeof(int); i++)
- shm[i] = i;
- for (i = 0; i < size / sizeof(int); i++)
- {
- if (shm[i] != i)
- {
- fprintf(stderr, "failed at %d: %d", i, shm[i]);
- }
- }
-
- return sm_shmstop((void *) shm, shmid, owner);
-}
-
-
-/*
-** SHMTEST -- test of shared memory
-**
-** Parameters:
-** owner -- create segment.
-**
-** Returns:
-** 0 on success
-** < 0 on failure.
-*/
-
-# define MAX_CNT 10
-
-int shmtest __P((int));
-
-int
-shmtest(owner)
- int owner;
-{
- int *shm, shmid;
- int cnt = 0;
-
- shm = (int *) sm_shmstart(T_SHMKEY, SHMSIZE, 0, &shmid, owner);
- if (shm == (int *) 0)
- {
- perror("shminit failed");
- return -1;
- }
-
- if (owner)
- {
- int r;
-
- r = sm_shmsetowner(shmid, getuid(), getgid(), 0660);
- SM_TEST(r == 0);
- *shm = 1;
- while (*shm == 1 && cnt++ < MAX_CNT)
- sleep(1);
- SM_TEST(cnt <= MAX_CNT);
-
- /* release and re-acquire the segment */
- r = sm_shmstop((void *) shm, shmid, owner);
- SM_TEST(r == 0);
- shm = (int *) sm_shmstart(T_SHMKEY, SHMSIZE, 0, &shmid, owner);
- SM_TEST(shm != (int *) 0);
- }
- else
- {
- while (*shm != 1 && cnt++ < MAX_CNT)
- sleep(1);
- SM_TEST(cnt <= MAX_CNT);
- *shm = 2;
-
- /* wait a momemt so the segment is still in use */
- sleep(2);
- }
- return sm_shmstop((void *) shm, shmid, owner);
-}
-
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{
- bool interactive = false;
- bool owner = false;
- int big = -1;
- int ch;
- int r = 0;
- int status;
- extern char *optarg;
-
-# define OPTIONS "b:io"
- while ((ch = getopt(argc, argv, OPTIONS)) != -1)
- {
- switch ((char) ch)
- {
- case 'b':
- big = atoi(optarg);
- break;
-
- case 'i':
- interactive = true;
- break;
-
- case 'o':
- owner = true;
- break;
-
- default:
- break;
- }
- }
-
- if (interactive)
- r = shminter(owner);
- else if (big > 0)
- r = shmbig(true, big);
- else
- {
- pid_t pid;
- extern int SmTestNumErrors;
-
- if ((pid = fork()) < 0)
- {
- perror("fork failed\n");
- return -1;
- }
-
- sm_test_begin(argc, argv, "test shared memory");
- if (pid == 0)
- {
- /* give the parent the chance to setup data */
- sleep(1);
- r = shmtest(false);
- }
- else
- {
- r = shmtest(true);
- (void) wait(&status);
- }
- SM_TEST(r == 0);
- if (SmTestNumErrors > 0)
- printf("add -DSM_CONF_SHM=0 to confENVDEF in devtools/Site/site.config.m4\nand start over.\n");
- return sm_test_end();
- }
- return r;
-}
-#else /* SM_CONF_SHM */
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{
- printf("No support for shared memory configured on this machine\n");
- return 0;
-}
-#endif /* SM_CONF_SHM */
OpenPOWER on IntegriCloud