source: trunk/include/startstop_lib.h @ 2924

Revision 2924, 7.9 KB checked in by paulf, 13 years ago (diff)

modified MAX_CHILD from 100 to 200 as per user request

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1
2/*
3 *   THIS FILE IS UNDER RCS - DO NOT MODIFY UNLESS YOU HAVE
4 *   CHECKED IT OUT USING THE COMMAND CHECKOUT.
5 *
6 *    Revision history:
7 *     $Log$
8 *     Revision 1.7  2007/04/03 17:28:58  paulf
9 *     modified MAX_CHILD from 100 to 200 as per user request
10 *
11 *     Revision 1.6  2007/03/28 14:13:39  paulf
12 *     minor MACOSX #ifdefs added
13 *
14 *     Revision 1.5  2007/02/27 05:15:34  stefan
15 *     stop/restart messages
16 *
17 *     Revision 1.4  2007/02/22 21:01:17  stefan
18 *     lock procs
19 *
20 *     Revision 1.3  2007/02/20 21:58:46  stefan
21 *     startstop lock, no two at once
22 *
23 *     Revision 1.2  2006/06/17 01:15:51  stefan
24 *     remove inaccurate comment
25 *
26 *     Revision 1.1  2006/04/04 16:48:03  stefan
27 *     startstop with reconfigure and libraries
28 *
29 *     Revision 1.1  20060226 20:05:54  lisowski
30 *     Initial revision
31 *
32 *
33 *
34 */
35
36/*
37 * startstop_unix_generic.h: startstop parameter definitions for all platforms.
38 *
39 */
40
41#ifndef startstop_util_H
42#define startstop_util_H
43
44  /******************************************************************
45   *                         Includes                               *
46   *                                                                *
47   ******************************************************************/
48
49#ifdef _WINNT
50 #include <windows.h>
51#endif  /* _WINNT */
52#include <stdio.h>
53#include <string.h>
54#include <ctype.h>
55#include <fcntl.h>
56#include <lockfile.h>
57#include <math.h>
58#include <signal.h>
59#include <stdlib.h>
60#include <errno.h>
61#include <time.h>
62
63#ifndef __DARWIN_UNIX03
64#include <malloc.h>
65#else
66#include <sys/malloc.h>
67#endif
68
69#include <sys/types.h>
70#include <earthworm.h>      /* Earthworm main include file */
71#include <kom.h>
72#include <transport.h>      /* Earthworm shared-memory transport routines */
73#include <time_ew.h>        /* Earthworm time conversion routines */
74
75  /******************************************************************
76   *                         #defines                               *
77   *                                                                *
78   ******************************************************************/
79
80/* Below #defines snagged from startstop_x.c */
81#define MAX_RING   50         /* Maximum number of transport rings  */
82#define MAX_CHILD 200         /* Maximum children to this process   */
83#define MAX_ARG    50         /* Maximum command line arguments     */
84#define MAX_STATUS_LEN  (((MAX_RING)+(MAX_CHILD))*100)
85#define ERR_STARTCHILD  1
86#define TIMESTR_LEN  26       /* Length of string from GetCurrentUTC() */
87
88#define LOGNAME_MAX 8 /* This was just assigned for linux; I didn't see where it gets set in Solaris, and neither did the compiler, so I'm breaking this out of the #else below. */
89
90#define SUCCESS 0             /* Return value */
91#define EXIT 1                /* Return value */
92
93/* standard TRUE/FALSE definitions */
94#ifndef TRUE
95#define TRUE        1
96#endif
97#ifndef FALSE
98#define FALSE       0
99#endif
100
101  /******************************************************************
102   *                         Structs                                *
103   *                                                                *
104   ******************************************************************/
105
106#ifdef _WINNT
107    typedef struct {
108       char   commandLine[80];
109       char   progName[40];
110       char   priorityClass[9];
111       char   threadPriority[13];
112       char   display[17];
113       char   status[9]; /* stores "Stopped" status... vs. Alive/Dead */
114       PROCESS_INFORMATION procInfo;
115    } CHILD;
116#else /* shared by both Solaris and Linux/unix */
117    #define MAXLINE     200
118    #if defined(_LINUX) || defined(__DARWIN_UNIX03)
119        #define P_MYID (-1)
120    #endif
121    typedef struct {
122       char   parm[MAXLINE];
123       char   commandLine[MAXLINE];
124       char   tcum[20];          /* Cumulative run time */
125       char   *argv[MAX_ARG];
126       char   *processName;
127       pid_t  pid;
128       char   className[4];
129       int    priority;
130       char   use_uname[LOGNAME_MAX+1];
131       char   use_gname[LOGNAME_MAX+1];
132       uid_t  use_uid;
133       gid_t  use_gid;
134       char   status[9]; /* stores "Stopped" status... vs. Alive/Dead */
135    } CHILD;
136
137#endif
138
139typedef struct {
140    char            ConfigFile[FILENAME_MAX];  /* config file name */
141    unsigned char   InstId;     /* local installation id          */
142    unsigned char   MyModId;        /* startstop's module id          */
143    char            MyModName[MAX_MOD_STR]; /* name to use to lookup MyModId */
144    unsigned char   ModWildcard;
145    unsigned char   TypeError;
146    unsigned char   TypeHeartBeat;
147    unsigned char   TypeStatus;
148    unsigned char   TypeRestart;
149    unsigned char   TypeStop;
150    unsigned char   TypeReqStatus;
151    unsigned char   TypeReconfig;
152    char            MyPriorityClass[9];
153    int             HeartbeatInt;       /* Heartbeat interval in seconds */
154    SHM_INFO        *Region;            /* Pointers to transport regions */
155                                /* SHM_INFO definied in transport.h */
156    char            ringName[MAX_RING][MAX_RING_STR]; /* Array of ring names.
157    MAX_RING_STR is defined in earthworm_defs.h and at this time happens to be set to 32 */
158    long            ringSize[MAX_RING]; /* Ring size in kbytes           */
159    int             ringKey[MAX_RING];  /* Which rings to create         */
160    int             nRing;              /* Number of transport rings     */
161    int             LogSwitch;          /* logging switch                */
162    int             KillDelay;          /* number of seconds to wait before
163                                   killing modules on shutdown   */
164    int     statmgr_sleeptime;  /* The amount of time that
165                                   startstop sleeps after starting
166                                   statmgr, default 1000
167                                   John Patton                   */
168    int     statmgr_location;   /* The location of statmgr in the
169                                   child array or, by default, one
170                                   past the last possible child so
171                                   if statmgr is not present, no
172                                   other modules will be affected*/
173    char tstart[TIMESTR_LEN];   /* Buffer for program start time   */
174    char Version[127];          /* Release version   */
175} METARING;
176
177  /******************************************************************
178   *                         Prototypes                             *
179   *                                                                *
180   ******************************************************************/
181
182void Heartbeat( METARING *);    /* Heartbeat function              */
183void SendStopReq( METARING *, char *);    /* Send stop message to the ring */
184void SendRestartReq( METARING *, char *);  /* Send restart msg to the ring */
185void GetCurrentUTC( char * );   /* Get UTC as a 26 char string     */
186void ReportError( int, char *, METARING * ); /*  creates an error message */
187int  StartError( int , char *, METARING *, int * ); /* start children err mesg */
188void LockStartstop(char *, char *);/* Lock startstop so another can't start */
189void UnlockStartstop();         /* Unlock once startstop quits */
190  /******************************************************************
191   *                         Externs                                *
192   *                                                                *
193   ******************************************************************/
194
195int         oldNChild;    /* original number of children before a reconfig request */
196int         newNRing;     /* new NRing total */
197#ifdef _WINNT
198DWORD       badProcessID; /* increment this to keep track of bad processes */
199#else /* shared by both Solaris and Linux/unix */
200pid_t       badProcessID; /* increment this to keep track of bad processes */
201#endif
202char * lockfile;          /* create a lock so only a single instance of startstop runs */
203int lockfile_fd;
204
205#endif /* not defined startstop_util_H */
Note: See TracBrowser for help on using the repository browser.