summaryrefslogtreecommitdiffstats
path: root/contrib/ntp/util/sht.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ntp/util/sht.c')
-rw-r--r--contrib/ntp/util/sht.c185
1 files changed, 0 insertions, 185 deletions
diff --git a/contrib/ntp/util/sht.c b/contrib/ntp/util/sht.c
deleted file mode 100644
index b993de9..0000000
--- a/contrib/ntp/util/sht.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * sht.c - Testprogram for shared memory refclock
- * read/write shared memory segment; see usage
- */
-#ifndef SYS_WINNT
-#include <sys/types.h>
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#include <stdio.h>
-#include <time.h>
-#include <unistd.h>
-#include <stdlib.h>
-#else
-#include <windows.h>
-#include <time.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <iostream.h>
-#define sleep(x) Sleep(x*1000)
-#endif
-#include <assert.h>
-struct shmTime {
- int mode; /* 0 - if valid set
- * use values,
- * clear valid
- * 1 - if valid set
- * if count before and after read of values is equal,
- * use values
- * clear valid
- */
- int count;
- time_t clockTimeStampSec;
- int clockTimeStampUSec;
- time_t receiveTimeStampSec;
- int receiveTimeStampUSec;
- int leap;
- int precision;
- int nsamples;
- int valid;
-};
-
-struct shmTime *
-getShmTime (
- int unit
- )
-{
-#ifndef SYS_WINNT
- int shmid=shmget (0x4e545030+unit, sizeof (struct shmTime), IPC_CREAT|0777);
- if (shmid==-1) {
- perror ("shmget");
- exit (1);
- }
- else {
- struct shmTime *p=(struct shmTime *)shmat (shmid, 0, 0);
- if ((int)(long)p==-1) {
- perror ("shmat");
- p=0;
- }
- assert (p!=0);
- return p;
- }
-#else
- char buf[10];
- LPSECURITY_ATTRIBUTES psec=0;
- sprintf (buf,"NTP%d",unit);
- SECURITY_DESCRIPTOR sd;
- SECURITY_ATTRIBUTES sa;
- HANDLE shmid;
-
- assert (InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION));
- assert (SetSecurityDescriptorDacl(&sd,1,0,0));
- sa.nLength=sizeof (SECURITY_ATTRIBUTES);
- sa.lpSecurityDescriptor=&sd;
- sa.bInheritHandle=0;
- shmid=CreateFileMapping ((HANDLE)0xffffffff, 0, PAGE_READWRITE,
- psec, sizeof (struct shmTime),buf);
- if (!shmid) {
- shmid=CreateFileMapping ((HANDLE)0xffffffff, 0, PAGE_READWRITE,
- 0, sizeof (struct shmTime),buf);
- cout <<"CreateFileMapping with psec!=0 failed"<<endl;
- }
-
- if (!shmid) {
- char mbuf[1000];
- FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM,
- 0, GetLastError (), 0, mbuf, sizeof (mbuf), 0);
- int x=GetLastError ();
- cout <<"CreateFileMapping "<<buf<<":"<<mbuf<<endl;
- exit (1);
- }
- else {
- struct shmTime *p=(struct shmTime *) MapViewOfFile (shmid,
- FILE_MAP_WRITE, 0, 0, sizeof (struct shmTime));
- if (p==0) {
- char mbuf[1000];
- FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM,
- 0, GetLastError (), 0, mbuf, sizeof (mbuf), 0);
- cout <<"MapViewOfFile "<<buf<<":"<<mbuf<<endl;
- exit (1);
- }
- return p;
- }
- return 0;
-#endif
-}
-
-
-int
-main (
- int argc,
- char *argv[]
- )
-{
- volatile struct shmTime *p=getShmTime(2);
- if (argc<=1) {
- printf ("usage: %s r[c][l]|w|snnn\n",argv[0]);
- printf (" r read shared memory\n");
- printf (" c clear valid-flag\n");
- printf (" l loop (so, rcl will read and clear in a loop\n");
- printf (" w write shared memory with current time\n");
- printf (" snnnn set nsamples to nnn\n");
- printf (" lnnnn set leap to nnn\n");
- printf (" pnnnn set precision to -nnn\n");
- exit (0);
- }
- switch (argv[1][0]) {
- case 's': {
- p->nsamples=atoi(&argv[1][1]);
- }
- break;
- case 'l': {
- p->leap=atoi(&argv[1][1]);
- }
- break;
- case 'p': {
- p->precision=-atoi(&argv[1][1]);
- }
- break;
- case 'r': {
- char *ap=&argv[1][1];
- int clear=0;
- int loop=0;
- printf ("reader\n");
- while (*ap) {
- switch (*ap) {
- case 'l' : loop=1; break;
- case 'c' : clear=1; break;
- }
- ap++;
- }
- do {
- printf ("mode=%d, count=%d, clock=%d.%d, rec=%d.%d,\n",
- p->mode,p->count,p->clockTimeStampSec,p->clockTimeStampUSec,
- p->receiveTimeStampSec,p->receiveTimeStampUSec);
- printf (" leap=%d, precision=%d, nsamples=%d, valid=%d\n",
- p->leap, p->precision, p->nsamples, p->valid);
- if (!p->valid)
- printf ("***\n");
- if (clear) {
- p->valid=0;
- printf ("cleared\n");
- }
- if (loop)
- sleep (1);
- } while (loop);
- }
- break;
- case 'w': {
- printf ("writer\n");
- p->mode=0;
- if (!p->valid) {
- p->clockTimeStampSec=time(0)-20;
- p->clockTimeStampUSec=0;
- p->receiveTimeStampSec=time(0)-1;
- p->receiveTimeStampUSec=0;
- printf ("%d %d\n",p->clockTimeStampSec, p->receiveTimeStampSec);
- p->valid=1;
- }
- else {
- printf ("p->valid still set\n"); /* not an error! */
- }
- }
- break;
- }
-}
OpenPOWER on IntegriCloud