source: trunk/include/startstop_lib.h @ 3176

Revision 3176, 8.0 KB checked in by paulf, 12 years ago (diff)

increased className array size for linux

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