From: dobrek Date: Mon, 19 Mar 2001 20:45:31 +0000 (+0000) Subject: -3f2839b879f378e29cfee71b2738b8ec DQS-3.3.1.tgz X-Git-Url: http://git.pld-linux.org/?p=packages%2Fdqs.git;a=commitdiff_plain;h=5f71eac19cbde9b2b93515656ed4821eca43f5a9 -3f2839b879f378e29cfee71b2738b8ec DQS-3.3.1.tgz -And related stuff Changed files: dqs-PLD-Makefile -> 1.1 dqs-PLD-conf_file -> 1.1 dqs-PLD-def.h -> 1.1 dqs-PLD-dqs.h -> 1.1 dqs-PLD-resolve_file -> 1.1 dqs-install.patch -> 1.1 --- diff --git a/dqs-PLD-Makefile b/dqs-PLD-Makefile new file mode 100755 index 0000000..ae06815 --- /dev/null +++ b/dqs-PLD-Makefile @@ -0,0 +1,224 @@ +INSTALL_DIR=$(DESTDIR)/usr/bin +BIN_DIR=$(DESTDIR)/usr/bin +CONF_DIR=$(DESTDIR)/etc/dqs +DOC_DIR=$(DESTDIR)/usr/share/doc/dqs +LIB_DIR=$(DESTDIR)/usr/lib +MAN1_DIR=$(DESTDIR)/usr/share/man/man1 +MAN3_DIR=$(DESTDIR)/usr/share/man/man3 +ROOT=0 +DQS_ROOT=0 +SYSGRP=0 +DQS_SYSGRP=0 +CC=cc +CFLAGS=-g +LFLAGS= +# the next line is a "majic-cookie" - don't remove it +#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +# sets up an arc dependant subdirectory under DQS/ARCS +# ans builds the default distribution + +default : + UTIL/make_arcs make CC=$(CC) -f Makefile + +#****************************************************** +# dirs - Make Install Directories + +dirs: + -mkdir -p $(INSTALL_DIR) $(ARC_DIR) $(BIN_DIR) + -mkdir -p $(DOC_DIR) $(LIB_DIR) $(MAN1_DIR) $(MAN3_DIR) + -mkdir -p $(CONF_DIR) + -chmod 755 $(CONF_DIR) + +#****************************************************** +# config - Configure DQS + +config: + cd CONFIG;make clean;make CC=$(CC);./config;cd .. + +#****************************************************** +# config - Configure DQS + +host_ck: + $(CC) -o CONFIG/host_ck CONFIG/host_ck.c;CONFIG/host_ck + +#****************************************************** +# unconfig - Unconfigure DQS + +unconfig: + cd CONFIG;make clean;make CC=$(CC);./config -u;cd .. + +#****************************************************** +# sets up an arc dependant subdirectory under DQS/ARCS +# ans builds the DQS checpointing library + +ckpt: + UTIL/make_arcs make CC=$(CC) -f Makefile $@ + +#****************************************************** +# install the default distribution + +installbin: dirs + UTIL/make_arcs make CC=$(CC) -f Makefile $@ \ + BIN_DIR=$(BIN_DIR) DQS_ROOT=$(DQS_ROOT) \ + DQS_SYSGRP=$(DQS_SYSGRP) + +#****************************************************** +# install the sample conf files + +installconf: dirs + UTIL/install -o $(DQS_ROOT) -g $(DQS_SYSGRP) \ + -m 744 SRC/conf_file $(CONF_DIR)/conf_file + UTIL/install -o $(DQS_ROOT) -g $(DQS_SYSGRP) \ + -m 744 SRC/resolve_file $(CONF_DIR)/resolve_file + UTIL/install -o $(DQS_ROOT) -g $(DQS_SYSGRP) \ + -m 700 SRC/key_file $(CONF_DIR)/key_file + +#****************************************************** +# installall + +installall: installbin installconf + + +#****************************************************** +clean: + rm -r -f ARCS + cd CONFIG; make -f Makefile clean + cd SRC; make -f Makefile clean + cd UTIL; make -f Makefile clean + cd UTIL/TEST; make -f Makefile clean + rm -f *~ manifest *.out Part* *.tar *.Z *.gz OUT core typescript + rm -r -f CVS.tar.gz CONFIG/usr + +###################################################### +###################################################### +###################################################### +# multi-architecture makes + +#****************************************************** +# pall - Parrallel Make +# uses "rsh" to make binaries for multiple arcs concurrently +# see .PMakefile +# output from all makes placed in the file OUT +# ex: +# make pall +# make pdirs +# make pinstallbin +# make pinstallall + +pall: + @$(MAKE) -f Makefile rdist + @cd UTIL;$(MAKE) -f Makefile pmake + UTIL/pmake .PMakefile OUT + +#****************************************************** +# pdirs - Parallel Make Dirs + +pdirs: + @cd UTIL;$(MAKE) -f Makefile pmake + UTIL/pmake .PMakefile OUT dirs + +#****************************************************** +#pinstallbin - Parallel Install Bin + +pinstallbin: + @cd UTIL;$(MAKE) -f Makefile pmake + UTIL/pmake .PMakefile OUT installbin + +#****************************************************** +# pinstallall - Parallel Installal + +pinstallall: + @cd UTIL;$(MAKE) -f Makefile pmake + UTIL/pmake .PMakefile OUT installall + +###################################################### +###################################################### +###################################################### +# the rest of these are for development only +# read the disclaimers before using them! + +#****************************************************** +# builds the user_interface and design docs. +# also builds a set of DQS function man pages +# and reference docs. +# DON'T DO THIS UNLESS YOU HAVE LATEX and DVIPS! +# otherwise you will trash the preformatted docs! + +doc: + cd SRC; make -f Makefile $@ + +#****************************************************** +# make the readme file(already done for distribution) +# DON'T DO THIS UNLESS YOU HAVE LATEX and DVIPS! +# otherwise you will trash the preformatted docs! + +readme: + cd DOC/readme; make CC=$(CC) -f Makefile $@ + +#****************************************************** +# this is really just for development +# DON'T DO THIS UNLESS YOU HAVE LATEX and DVIPS! +# otherwise you will trash the preformatted docs! + +everything: dqs ckpt installbin \ + installlib installman1 \ + installman3 installdoc + +#****************************************************** +# this is really just for development +# DON'T DO THIS UNLESS YOU HAVE LATEX and DVIPS! +# otherwise you will trash the preformatted docs! + +distribution: readme doc clean + +#****************************************************** + +backup: gzip + cp DQS.tar.gz /ds9/a/users/queuing/DQS.tar.gz.`date +%m.%d.%y.%H:%M` + +#****************************************************** + +backupcvs: + cd /margit/c/users/dqs;tar -cvf CVS.tar CVS; \ + rm -f CVS.tar.gz; /usr/local/bin/gzip CVS.tar; \ + cp CVS.tar.gz /ds9/a/users/queuing/CVS.tar.gz.`date +%m.%d.%y.%H:%M` + +#****************************************************** + +rdist: clean + cd .. ;/usr/ucb/rdist -f DQS/.distfile + +#****************************************************** + +manifest: clean + cd ..;/usr/local/bin/findsrc -dy -oDQS/manifest DQS; + +#****************************************************** + +tar: manifest + cd ..;tar -cvf DQS.tar DQS; mv DQS.tar DQS; \ + cd DQS;compress DQS.tar + +#****************************************************** + +gzip: manifest + cd ..;tar -cvf DQS.tar DQS; mv DQS.tar DQS; \ + cd DQS;/usr/local/bin/gzip DQS.tar + +#****************************************************** + +fd0: gzip + gnutar -cvMf /dev/fd0 DQS.tar.gz + +#****************************************************** + +fd1: gzip + gnutar -cvMf /dev/fd1 DQS.tar.gz + +#****************************************************** + +cvsfd0: + rm -f CVS.tar.gz + gnutar -czvf CVS.tar.gz /margit/c/users/dqs/CVS + gnutar -cvMf /dev/fd0 CVS.tar.gz + diff --git a/dqs-PLD-conf_file b/dqs-PLD-conf_file new file mode 100755 index 0000000..2684911 --- /dev/null +++ b/dqs-PLD-conf_file @@ -0,0 +1,32 @@ + QMASTER_SPOOL_DIR /var/spool/dqs + EXECD_SPOOL_DIR /var/spool/dqs + RESERVED_PORT TRUE + DEFAULT_CELL localhost + DQS_EXECD_SERVICE dqs313_execd + QMASTER_SERVICE dqs313_qmaster + INTERCELL_SERVICE dqs313_intercell + REAUTH_TIME 60 + MAILER /bin/mail + DQS_BIN /usr/bin + ADMINISTRATOR postmaster@localhost + DEFAULT_ACCOUNT GENERAL + LOGMAIL FALSE + DEFAULT_RERUN FALSE + DEFAULT_SORT_SEQ_NO FALSE + SYNC_IO FALSE + USER_ACCESS ACCESS_FREE + LOGFACILITY LOG_VIA_COMBO + LOGLEVEL LOG_INFO + MIN_UID 1000 + MIN_GID 100 + MAXUJOBS 10 + OUTPUT_HANDLING LEAVE_OUTPUT_FILES + ADDON_SCRIPT NONE + ADDON_INFO NONE + LOAD_LOG_TIME 30 + STAT_LOG_TIME 600 + SCHEDULE_TIME 60 + MAX_UNHEARD 90 + ALARMS 3 + ALARMM 3 + ALARML 3 diff --git a/dqs-PLD-def.h b/dqs-PLD-def.h new file mode 100755 index 0000000..dbec83a --- /dev/null +++ b/dqs-PLD-def.h @@ -0,0 +1,1538 @@ +static char def_rcsid[]="$Id$"; + +/*---------------------------------------------------- + * def.h Tom Green Mon Jan 31 10:44:27 1994 + * + * Copyright 1993 + * + * SUPER COMPUTER COMPUTATIONS RESEARCH INSTITUTE + * FLORIDA STATE UNIVERSITY + * + * + * SCRI representatives make no claims about the + * suitability of this software for any purpose. + * It is provided "as is" without express or + * implied warranty. + * + * $Log$ + * Revision 1.8 2000/03/09 03:56:07 chuck + * Modified FLOCK macro for lockf on System 5 hosts and flock on + * BSD hosts. FLOCK now only locks. New macro FUNLOCK is now used + * to unlock. + * + * Revision 1.7 2000/03/09 03:51:22 chuck + * Fixed a memory leak in the UNPACKSTR macro. + * An input argument was overwritten without first releasing + * the memory it pointed to. + * + * Revision 1.6 1999/04/30 16:46:26 green + * reworked file locking in dqs_log.c to use MACRO FLOCK defined in def.h + * so that AIX doesn't have to include -lbsd + * + * Revision 1.5 1999/04/30 14:50:52 green + * support for changing from hex to base10 for queue configurations + * + * Revision 1.4 1998/10/26 19:24:09 green + * use the DQS_EXIT macro to determine exit value of ancillaries + * + * Revision 1.3 1998/10/21 14:42:52 green + * Red Hat Alpha Port - ADDRLEN incorporated + * SETPGRP/GETPGRP macros redefined + * + * Revision 1.2 1998/10/13 15:08:48 green + * Solaris 2.6 support - hopefully, as I don't have access to one... + * + * Revision 1.1.1.1 1998/08/18 14:39:10 green + * DQS 3.2.0.5 WIP Import + * + * Revision 1.5 1997/10/21 15:51:19 decker + * Expanded MAX_STRING_SIZE and TOKEN_SIZE to 2048 + * + * Revision 1.4 1997/09/04 16:39:05 decker + * Ron Lee's Patch for VALID,SETBIT,CLEARBIT added + * + * Revision 1.3 1997/08/08 15:17:14 decker + * Added David Geldreich Patch: + * + * Revision 1.2 1997/04/10 21:51:49 green + * added def for rindex + * + * Revision 1.1.1.1 1997/04/10 15:10:31 green + * DQS 3.1.3.4.1 Distribution + * + * Revision 3.60 1996/08/26 14:20:45 nrl + * Incorporated SCRI scheduling changes + * + * Revision 3.59 1996/08/16 17:44:42 nrl + * Added SETEUID macro to def.h to provide differentiation + * for HP from the rest of the pack. + * + * Revision 3.58 1996/07/09 19:53:12 nrl + * Added SOLARIS2.5 parameters + * + * Revision 3.57 1996/06/27 01:55:37 nrl + * changes to accomodate osf gcc + * + * Revision 3.55 1996/06/26 19:08:44 nrl + * set JOBS_SCANNED_PER_PASS to very large number to force + * a relook at the entire queue each time. + * + * Revision 3.54 1996/06/26 14:03:19 nrl + * Added pvmcleanup.sh to install.. added osf2.3 detection + * + * Revision 3.53 1996/06/17 02:28:36 nrl + * Updtaes from Guntram Wolski, Ron Lee, John Makosky and + * Bodo Beckebach + * + * Revision 3.52 1996/04/01 21:35:38 nrl + * removed absolte path from DEBUG313,txt file name + * + * Revision 3.51 1996/03/25 16:28:26 nrl + * Repaired parameter scanning for qidle + * + * Revision 3.50 1996/03/21 17:06:37 nrl + * added fortran and "c" syntax to resource requests + * + * Revision 3.49 1996/03/19 23:27:01 nrl + * added capability to clean up consumable resources whenthey + * get out of sync with reality + * + * Revision 3.48 1996/03/17 00:57:28 nrl + * merge in qsub prevalidation scheme and consumable restoration + * + * Revision 3.47 1996/03/14 03:15:57 nrl + * merge in subordinate queues and consumable resource changes + * + * Revision 3.46 1996/03/12 17:11:45 nrl + * removed aborts and replaced with an error messaging scheme + * to send email to the dqs adminsitrator and wait for + * actions by that administrator + * + * Revision 3.45 1996/02/07 13:07:37 nrl + * Added "process leader" and TMP_FILES link capability + * + * Revision 3.44 1996/01/19 20:58:36 nrl + * merged SCRI code and new job and queue structure changes + * + * Revision 3.43 1995/10/23 18:51:37 nrl + * Added fix for setpgrp (once more) for Solaris 2.4, recommended by + * Ron Lee + * + * Revision 3.42 1995/07/13 20:51:06 nrl + * This is the contribution of that almost anonymous fellow + * Ron lee from a company which does not its name mentioned.. + * which finally!! (we hope) solves ALL the Solaris 2.4 problems. + * + * Revision 3.41 1995/07/12 18:47:48 nrl + * Fixed numerous problmes with Irix 5.3 and 6.0 systems + * + * Revision 3.40 1995/06/22 19:31:07 nrl + * Added kludgie "subpriority" field to differentiate jobs from the + * same user. Also fixed MAXUJOBS and added "MAXU" warning to + * the "qstat" command. + * + * Revision 3.39 1995/06/21 16:57:28 nrl + * Major scheduling changes... added a subpriority field to manage + * things within the user submitted priority. Added priority info to the + * accounting file. + * + * Revision 3.38 1995/06/15 17:20:51 nrl + * Mike Iglesias solved the setpriority problem on OSF platforms + * + * Revision 3.37 1995/06/15 14:20:54 nrl + * changed SETPGRP for OSF systems to use setpgid + * + * Revision 3.36 1995/06/13 12:06:11 nrl + * Updated count of variables for fscanf testing + * + * Revision 3.35 1995/05/29 18:08:44 nrl + * More solaris stuff GAGGHH had to differentiate more cases of + * solaris2.3 and solaris2.4 stuff + * + * Revision 3.34 1995/05/28 16:44:35 nrl + * Fixes for solaris2.3 and solaris 2.4 and mailer default recipients + * + * Revision 3.33 1995/05/14 18:28:46 nrl + * Plugged one hole in dqs_execd and qmaster handhsaking... + * added gethostbyname calls to overcome problems with some + * systems + * + * Revision 3.32 1995/03/05 03:46:56 nrl + * Included Axel Brandes job scheduling mechanism to keep one + * user from hawging the queue. + * + * Revision 3.31 1995/02/22 14:29:13 nrl + * added "FREE" macro to make sure all freed pointers are NULL, + * replaced all calls to free( ) with FREE. + * + * Revision 3.30 1995/02/20 01:02:59 nrl + * corrected SUN changes for bcmp,bcopy and bzero + * + * Revision 3.29 1995/02/19 22:37:48 nrl + * Simplified pvm and tcgmsg interface to a minimalist scheme requiring + * user scripts to start the daemons + * + * Revision 3.28 1995/02/17 02:56:51 nrl + * Added formal skeletons for PVM and TCGMSG parallel modes + * + * Revision 3.27 1995/02/09 12:48:57 nrl + * Added "delete complex" and "modify complex" + * + * Revision 3.26 1995/02/06 16:31:48 nrl + * Added "account" info to rusage structure and to the "acc_file" + * for analysis by user. + * + * Revision 3.25 1995/01/17 16:31:57 nrl + * completed mailer feature + * + * Revision 3.24 1994/11/14 13:56:36 green + * fixed hpux "nice" + * 536c536 + * < #define SETPRIORITY(niceval) nice(GETPGRP,niceval) + * --- + * > #define SETPRIORITY(niceval) nice(niceval) + * -------------------------------------------------------------------- + * + * Revision 3.23 1994/08/02 23:11:05 green + * added support for a crude job staging mechanism + * + * Revision 3.22 1994/07/05 14:22:27 green + * added James MacKinnon's NeXT ports + * + * Revision 3.21 1994/06/12 23:18:00 green + * yanked NCARGS + * + * Revision 3.20 1994/06/12 21:04:56 green + * expanded DQS_MAXNAMELEN to MAX_STRING_SIZE in def.h + * + * utilize DQS_MAXNAMELEN for command size in dqs_dshd.c + * + * Revision 3.19 1994/06/09 18:38:20 green + * had some problems with nonre-entrant gethostbyX in dqs_sec.c - fixed + * + * #def overload for "GENERIC" in def.h - fixed + * + * Revision 3.18 1994/06/09 14:25:04 green + * yanked PVM after further digging through the PVM code decided there + * might be potential problems(let somebody else worry with pvm if they + * want it...) + * + * pulled out some sloaris #defs - maybe one day SUN will ship me my + * compiler + * + * Revision 3.17 1994/06/08 17:48:00 green + * added P4 support(with the help of Ralph Butler - Thanks Ralph!) + * + * backed down to Rev. 3.3 of dqs_check_to_do_list.c + * + * Revision 3.16 1994/06/07 16:45:37 green + * more "sloaris" porting... + * + * Revision 3.15 1994/06/07 12:37:55 green + * moved some format descriptors out of dqs_ck_to_do_list.c and + * dqs_job_exeit.c and into def.h + * + * added dqs_read_stats() to dqs_ck_to_do_list.c + * + * Revision 3.14 1994/06/06 01:23:01 green + * added "dqs_dshd_service" to the DQS config + * + * add "-par pvm" - though we do NOT intend to support it + * (see dqs_start_pvm.c for a more thorough discussion) + * + * Revision 3.13 1994/06/04 15:24:28 green + * added "-par parallel_packge" support + * + * Revision 3.12 1994/06/04 14:49:41 green + * added necessary P4/MPI defs + * + * Revision 3.11 1994/06/02 13:44:26 green + * attempt to port to Sloaris... + * Work In Progress(WIPed) + * + * Revision 3.10 1994/05/31 12:23:32 green + * modified #define for GETPGRP such that __osf__ doesn't utilize args + * + * Revision 3.9 1994/05/31 12:03:45 green + * some OSes define MAXNAMELEN - some don't + * handled with an ifndef in def.h + * + * removed "#include "h.h"" in defined.c + * + * yanked ANSI prototyping in dsh.c/dshd.c as some(sic) C compilers can't + * swallow them + * + * #ifdef'ed fcntl(F_SETOWN) out for HPUX in dsh.c as HPUX doesn't define + * it + * + * #ifdef'ed "#include " out of h.h #ifdefed + * __hpux/bsd_4_2/SVR3/__osf__.(taken care of in types.h in most of + * these.) + * + * Revision 3.8 1994/05/31 10:30:36 green + * some OSes define NCARGS, some don't - handle with ifndef... + * + * Revision 3.7 1994/05/31 00:52:40 green + * added dsh.c dshd.c to Makefile.proto + * + * added MAXNAMELEN and NCARGS to def.h + * + * type casting in dqs_reauth.c, dqs_sec.c, dqs_setup.c to hush gcc + * warnings + * + * added jmp_buf to globals.h, changed Revision number in globals.h + * + * added dsh and dshd tp prognames.h + * + * Revision 3.6 1994/05/30 23:56:16 green + * added necessary defs for DCMD/DSH to def.h + * + * added notes on necessary hooks to dqs_execd.c reqd for direct execing + * of dsh + * + * added "#include " to h.h + * + * Revision 3.5 1994/05/04 17:54:53 green + * added FreeBSD support(Pedro A M Vazquez) + * + * Revision 3.4 1994/04/01 02:59:28 green + * added "qalter" support + * + * Revision 3.3 1994/03/27 05:59:44 green + * def.h:UNPACKSTR() modified to force a NULL as realloc() doesn't + * necessarily return clean memory + * + * dqs_list.c:dqs_insert(TAIL) had a bug wheninserting to a NULL head + * + * may "Last Minute Hack" to dqs_list.c:dqs_showlist() really screwed up + * some things - yanked... + * + * Revision 3.2 1994/03/26 16:33:33 green + * added "-srl" support. + * + * dqs_resolve.c:dqs_read_resolve_file() now returns the primary qmaster + * name for fields marked as "none" + * + * Revision 3.1 1994/03/26 15:29:14 green + * allowed for "qconf -sq [dest_id_list]" vs "qconf -sq dest_id_list" + * + * write generic queue configuration in common_dir + * + * Revision 3.0 1994/03/07 04:13:02 green + * 3.0 freeze + * + * Revision 1.8 1994/02/25 23:13:17 green + * added "PID_FILE" to def.h to log process id. + * + * modified dqs_execd.c and qmaster.c to log pids to a file + * + * added dqs_log_pid() to dqs_utility.c + * + * remade func.h + * + * forced insertion of "green" into Man_head -- this needs to be removed + * and a def in dqs.h if running as non-root. + * + * Revision 1.7 1994/02/24 01:10:01 green + * added default compile flags in Makefile.proto + * + * modified GETPGRP() and SETPGRP() in def.h for IRIX 5.1.1.1 support + * + * changed "st_mtime" to "st_m_time" in dqs_reauth.cand dqs_sec.c + * for IRIX 5.1.1.1 support + * + * Revision 1.6 1994/02/23 16:19:16 green + * added "QUSAGE" to def.h + * + * Revision 1.5 1994/02/17 14:48:57 green + * added MAX_KLOG_TIME to def.h + * + * added some strategic dqs_set_coresize_2_0() as CYAs + * + * nuked some dqs_set_coresize_back_normal() + * + * dinked with ALRM handlers for "robustness" + * + * NOTE: HPUX does not support core limit size --- sad... + * + * Revision 1.4 1994/02/10 20:58:37 green + * moved "LOG_FILE" and "ERR_FILE" out of def.h to dqs.h + * + * fixed "-Passwd passwd_file" option + * + * Revision 1.3 1994/02/09 19:47:58 green + * syncing source with docs + * + * Revision 1.2 1994/02/02 20:22:05 green + * cleaned up "qconf.c" to sync with docs + * + * Revision 1.1.1.1 1994/02/01 17:57:36 green + * DQS 3.0 ALPHA + * + *--------------------------------------------------*/ + +/* logicals */ + +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef TRUE +#define TRUE 1 +#endif + + + +/* DQS_COMPILE_DEBUG inserts debugging macros + * LEAVE THEM IN!(or don't call if ya need help) + */ + +#define DQS_COMPILE_DEBUG +#define DEBUG_FILE stderr + +#define DEFAULT_EDITOR "vi" +#define DQS_MAX_FD 600 +#define MAX_SEQNUM 999999 +#define MAX_PATH 2048 + +/*********************************************************/ + +#ifdef __alpha +#define u_long32 u_int +#else +#define u_long32 u_long +#endif + +/*********************************************************/ +/* Job states */ +#define IDLE 0 + +/* Batch Services Summary */ + +#define JOB_EXECUTION 300 +#define JOB_ROUTING 301 +#define JOB_EXIT 302 +#define BATCH_SERVER_RESTART 303 +#define JOB_ABORTS 304 +#define QUEUE_JOB_REQUEST 305 +#define MODIFY_JOB_REQUEST 306 +#define DELETE_JOB_REQUEST 307 +#define JOB_MESSAGE_REQUEST 308 +#define RERUN_JOB_REQUEST 309 +#define SIGNAL_JOB_REQUEST 310 +#define JOB_STATUS_REQUEST 311 +#define QUEUE_STATUS_REQUEST 312 +#define SERVER_STATUS_REQUEST 313 +#define SELECT_JOBS_REQUEST 314 +#define MOVE_JOB_REQUEST 315 +#define HOLD_JOB_REQUEST 316 +#define RELEASE_JOB_REQUEST 317 +#define SERVER_SHUTDOWN_REQUEST 318 +#define LOCATE_JOB_REQUEST 319 +#define SIGNAL_QUEUE_REQUEST 320 + +#define STARTING_UP 321 /* NOT PART OF P1003.15D12! */ +#define DQS_ACK 500 +#define DQS_NAK 501 +#define LOAD_AVG 322 + +#define QMASTER_ACTION_REQUEST 323 /* sent to the qmaster for help */ +#define DQS_EXECD_ACTION_REQUEST 344 /* sent to the dqs_execd by the qmaster */ + +/* Action sub fields */ +#define SYNCHRONIZE 001 +#define ERROR_REPORT 002 +#define SLAVE_PROCESS_ALERT 003 +#define KILL_SLAVE_PROCESS 004 +#define REFRESH 005 +#define SHUTDOWN 006 +#define MAIL_TO_ADMINISTRATOR 007 + +/* return codes */ +#define DENIED 400 +#define ACCEPTED 401 + +/********************************************************************************/ +/************ scheduling constants *****************************************/ + +#define BASE_PRIORITY 1024 +#define PRIORITY_OFFSET 8 +#define NEWCOMER_FLAG 0x1000000 +/* forced negative sign bit */ +#define MAX_JOBS_EXCEEDED 0x8000000 +#define ALREADY_SCANNED 0x4000000 + +#define PRIORITY_MASK 0xffff00 +#define SUBPRIORITY_MASK 0x0000ff + +#define JOBS_SCANNED_PER_PASS 4000 +/********************************************************************************/ + +/* Event logging controls */ +#define LOG_VIA_SYSLOG 500 /* log via syslogd */ +#define LOG_VIA_FILE 501 /* log via logfile */ +#define LOG_VIA_COMBO 502 /* log messages both ways */ + +#define LOG_EXTDEBUG LOG_DEBUG+1 + +/********************************************************************************/ + +/* misc */ +#define ASCENDING 600 +#define DESCENDING 601 +#define HEAD 602 +#define TAIL 603 + +/********************************************************************************/ + +/* Shell strategies */ + +#define DQS_FIXED_SHELL 700 +#define DQS_FLOATING_SHELL 701 + +/********************************************************************************/ + +/* remap signals */ + +#define DQS_SIGHUP 901 +#define DQS_SIGINT 902 +#define DQS_SIGQUIT 903 +#define DQS_SIGILL 904 +#define DQS_SIGTRAP 905 +#define DQS_SIGABRT 906 +#define DQS_SIGIOT 907 +#define DQS_SIGEMT 908 +#define DQS_SIGFPE 909 +#define DQS_SIGKILL 910 +#define DQS_SIGBUS 911 +#define DQS_SIGSEGV 912 +#define DQS_SIGSYS 913 +#define DQS_SIGPIPE 914 +#define DQS_SIGALRM 915 +#define DQS_SIGTERM 916 +#define DQS_SIGURG 917 +#define DQS_SIGSTOP 918 +#define DQS_SIGTSTP 919 +#define DQS_SIGCONT 920 +#define DQS_SIGCHLD 921 +#define DQS_SIGTTIN 922 +#define DQS_SIGTTOU 923 +#define DQS_SIGIO 924 +#define DQS_SIGXCPU 925 +#define DQS_SIGXFSZ 926 +#define DQS_SIGVTALRM 927 +#define DQS_SIGPROF 928 +#define DQS_SIGWINCH 929 +#define DQS_SIGLOST 930 +#define DQS_SIGUSR1 931 +#define DQS_SIGUSR2 932 + +/********************************************************************************/ +/* Symbolic Constants */ + +/* misc */ + +#define NONE 0x00000000 +#define ALL 0x77777777 + +/* Checkpoint/Restart Constants */ +/* use dqs_show_checkpoint() */ + +#define CHECKPOINT_AT_MINIMUM_INTERVAL_SYM 'm' +#define CHECKPOINT_AT_MINIMUM_INTERVAL 0x00000001 +#define CHECKPOINT_AT_SHUTDOWN_SYM 's' +#define CHECKPOINT_AT_SHUTDOWN 0x00000002 +#define CHECKPOINT_AT_UNSPECIFIED_SYM 'u' +#define CHECKPOINT_AT_UNSPECIFIED 0x00000004 +#define NO_CHECKPOINT_SYM 'n' +#define NO_CHECKPOINT 0x00000008 + +/* Hold Type Constants */ +#define NO_HOLD_SYM 'n' +#define NO_HOLD 0x000000010 +#define OTHER_SYM 'o' +#define OTHER 0x000000020 +#define SYSTEM_SYM 's' +#define SYSTEM 0x000000040 +#define USER_SYM 'u' +#define USER 0x000000080 + +/* Job/Queue State Constants */ +/* use dqs_show_states() */ + +#define ALARM_SYM 'a' +#define ALARM 0x000000001 +#define SUSPEND_ON_COMP_SYM 'c' /* NOT PART OF P1003.15D12! */ +#define SUSPEND_ON_COMP 0x000000002 +#define DISABLED_SYM 'd' +#define DISABLED 0x000000004 +#define ENABLED_SYM 'e' +#define ENABLED 0x000000008 +#define HELD_SYM 'h' +#define HELD 0x000000010 +#define MIGRATING_SYM 'm' /* NOT PART OF P1003.15D12! */ +#define MIGRATING 0x000000020 +#define QUEUED_SYM 'q' +#define QUEUED 0x000000040 +#define RUNNING_SYM 'r' +#define RUNNING 0x000000080 +#define SUSPENDED_SYM 's' /* NOT PART OF P1003.15D12! */ +#define SUSPENDED 0x000000100 +#define TRANSISTING_SYM 't' +#define TRANSISTING 0x000000200 +#define UNKNOWN_SYM 'u' +#define UNKNOWN 0x000000400 +#define WAITING_SYM 'w' +#define WAITING 0x000000800 +#define EXITING_SYM 'x' /* NOT P1003.15D12 compliant! 'e' */ +#define EXITING 0x000001000 +#define XSUSPEND_ON_COMP 0x000002000 +#define HANDOFF_ERROR_SYM 'H' /* NOT PART OF P1003.15D12! */ +#define HANDOFF_ERROR 0x000004000 +#define SUBORDINATED_SYM 'S' /* NOT PART OF P1003.15D12! */ +#define SUBORDINATED 0x000008000 +/* Keep_list Constants */ +#define KEEP_NONE_SYM 'n' +#define KEEP_NONE 0x00000000 +#define KEEP_STD_ERROR_SYM 'e' +#define KEEP_STD_ERROR 0x000010000 +#define KEEP_STD_OUTPUT_SYM 'o' +#define KEEP_STD_OUTPUT 0x000020000 + +/* Mail Option Constants */ + +#define MAIL_AT_ABORT_SYM 'a' +#define MAIL_AT_ABORT 0x000040000 +#define MAIL_AT_BEGINNING_SYM 'b' +#define MAIL_AT_BEGINNING 0x000080000 +#define MAIL_AT_EXIT_SYM 'e' +#define MAIL_AT_EXIT 0x000100000 +#define NO_MAIL_SYM 'n' +#define NO_MAIL 0x000200000 +#define MAIL_AT_SUSPENSION_SYM 's' /* NOT PART OF P1003.15D12! */ +#define MAIL_AT_SUSPENSION 0x000400000 + +/********************************************************************************/ + +/* User access declarations */ + +#define GLOBAL_ACCESS_LIST "GLOBAL" /* global access list name */ +#define ACCESS_FREE 1 /* access free w/o exclusions */ +#define ACCESS_OPEN 2 /* access open w/ exclusions */ +#define ACCESS_RESTRICTED 3 /* access restricted, some */ + /* users allowed */ +/*******************************************************************************/ +/* conf file definitions */ +#define LEAVE_OUTPUT_FILES 800 +#define COPY_OUTPUT_FILES 801 +#define LINK_OUTPUT_FILES 802 + +/********************************************************************************/ + +/* misc qsub/qsh stuff */ + +/* Resource request types */ +#define GENERIC 0 /* resource requested by DQS group */ +#define HARD 0 /* request must be satisfied */ +#define SOFT 2 /* request need not be satisfied */ +#define SPECIFIC 3 /* specific queue requested */ + +/* used by the parser */ +#define MASTER 0 +#define H_SPECIFIC 1 +#define H_GENERIC 2 +#define S_SPECIFIC 3 +#define S_GENERIC 4 + +#define P4 1 +#define MPI 2 +#define GENERIC_SLA 3 +#define GENERIC_ALL 4 +#define PVM 5 +#define TCGMSG 6 +/********************************************************************************/ + +/* misc directories */ +/* these are all relative to the SPOOL_DIR */ +#define COMMON_DIR "common_dir" +#define EXEC_DIR "exec_dir" +#define JOB_DIR "job_dir" +#define QUEUE_DIR "queue_dir" +#define RUSAGE_DIR "rusage_dir" +#define TID_DIR "tid_dir" + +/* misc files */ +/* these are all relative to the SPOOL_DIR */ +#define ACL_FILE "common_dir/acl_file" +#define ACT_FILE "act_file" +#define PID_FILE "pid_file" +#define COMPLEX_FILE "common_dir/complex_file" +#define CONSUMABLE_FILE "common_dir/consumable_file" +#define COOKIE_FILE "common_dir/cookie_file" +#define DEFAULT_COMPLEX_FILE "common_dir/default_complex_file" +#define DEFAULT_QCONF_FILE "common_dir/default_qconf_file" +#define GENERIC_QUEUE "common_dir/generic_queue" +#define HOST_FILE "common_dir/host_file" +#define MAN_FILE "common_dir/man_file" +#define OP_FILE "common_dir/op_file" +#define SEQ_NUM_FILE "common_dir/seq_num_file" +#define STAT_FILE "stat_file" + +/*********************************************************/ +/*Code via Doug Gibson*/ +#define MAX_STRING_SIZE 2048 + +#define INTSIZE 4 /* (4) 8 bit bytes */ +#if _UNICOS +#define INTOFF 4 /* big endian 64-bit machines where sizeof(int) = 8 */ +#else +#define INTOFF 0 /* the rest of the world; see comments in request.c */ +#endif + +#define MAX_DBE_SIZE 4096 /* max (key,content) size in bytes for ndbm(3) */ + +#define REQUESTSIZE 1024 /* BE CAREFUL */ + +#define HASH_BUCKET_SIZE 128 +#define QMASTER_HASH_BUCKET_SIZE 256 +#ifndef MAX_NIS_RETRIES +#define MAX_NIS_RETRIES 10 /* max number of retries for slow NIS servers */ +#endif +#ifndef MAX_UNLINK_RETRIES +#define MAX_UNLINK_RETRIES 50 /* max number of unlink(2) retries */ +#endif + +#define CLEAR_EXECD_TIDS 10 /* how often to clear unreaped execd TIDs */ + +/*********************************************************/ +/* Operating system-specific definitions */ +/*********************************************************/ + +#if ( defined(SOLARIS23) || defined(SOLARIS24) || defined(SOLARIS25) || defined(SOLARIS26) || defined(SOLARIS27) ) +#define SOLARIS23_UP TRUE +#endif + +/* Extended sysconf(2) interface macros */ +#ifdef _SC_EXIT_SIGHUP +#define EXIT_SIGHUP sysconf(_SC_EXIT_SIGHUP) +#else +#define EXIT_SIGHUP FALSE +#endif +#ifdef _SC_PID_MAX +#define MAX_PROCESS_ID sysconf(_SC_PID_MAX) +#else +#define MAX_PROCESS_ID MAXPID +#endif +#ifdef _SC_UID_MAX +#define MAX_USER_ID sysconf(_SC_UID_MAX) +#else +#define MAX_USER_ID MAXUID +#endif + +/* FLOCK - lock a file */ + +#if (defined(_AIX) || defined(__hpux) || defined(sun)) +#define FLOCK(x) lockf(x,F_LOCK,0) +#define FUNLOCK(x) lockf(x,F_ULOCK,0) +#else +#define FLOCK(x) flock(x,LOCK_EX) +#define FUNLOCK(x) flock(x,LOCK_UN) +#endif + + +/* GETPGRP - get a process group */ + +#if (defined(__sgi) || defined(__convex__) || defined(_AIX) || defined(i386) || defined (SVR3) || defined (__osf__) || defined(solaris)|| defined(SOLARIS23_UP) ) +#define GETPGRP getpgrp() +#else +#define GETPGRP getpgrp(getpid()) +#endif + +/* SETPGRP - set process group */ +#if (defined(__sgi) || defined(i386) || defined(_UNICOS) || defined (SVR3)|| defined (__osf__) || defined (_AIX) || defined(solaris) || defined(SOLARIS23_UP) ) +#define SETPGRP setpgrp() +#else +#define SETPGRP setpgid(getpid(), GETPGRP) +#endif + +/* SunOS 4.1.X Specific SETPGRP, Required for Proper Signal Handling. */ +/* Assign calling process, PID=0, the Process Group ID, pgrp, to the actual */ +/* PID number. */ +#if ( defined(sun) && !(defined(solaris) || defined(SOLARIS23_UP) )) +#undef SETPGRP +#define SETPGRP setpgrp(0,getpid()) +#endif + +#if defined( __FreeBSD__) +#undef SETPGRP +#define SETPGRP setpgrp(getpid(),getpid()) +#endif +/*This is a patch from David Geldreich*/ +#if defined (__osf__) +#undef SETPGRP +#define SETPGRP setpgid(getpid(),getpid()) +#endif +/*End patch*/ +#if defined __hpux +#undef SETPGRP +#undef GETPGRP +#define SETPGRP setpgrp() +#define GETPGRP getpgrp() +#endif + +#if (defined( linux ) && defined(__alpha ) ) +#undef SETPGRP +#undef GETPGRP +#define SETPGRP setpgrp() +#define GETPGRP getpgrp() +#endif + +#if defined __hpux +#define SETEUID(e1) setresuid (-1, e1, -1) +#else +#define SETEUID(e1) seteuid ( e1 ) +#endif + + +/* SETPRIORITY - set process priority */ +#if (defined(solaris)||defined(SOLARIS23_UP)) +#define SETPRIORITY(niceval) nice(niceval-nice(0)) +#endif +#ifdef __hpux +#define SETPRIORITY(niceval) nice(niceval) +#endif +#ifdef _UNICOS +#define SETPRIORITY(niceval) nice(niceval) +#endif +#ifndef SETPRIORITY +#define SETPRIORITY(niceval) setpriority(PRIO_PGRP,GETPGRP,niceval) +#endif + +/* SunOS 4.1.X DOES NOT HAVE "strerror()" routine defined. */ +/* Forces the use of the "sys_errlist[]" structure defined in "". */ +#if ( defined(sun) && !(defined(solaris) || defined(SOLARIS23_UP) )) +#define STRERROR sys_errlist[(int) errno] +#else +#define STRERROR strerror((int) errno) +#endif + +#if (defined(_UNICOS) || defined(__hpux) || defined(solaris) || defined(SOLARIS23_UP)) +#define RESOURCES tms +#define GETRUSAGE(loc) times(loc) +#if _UNICOS +#define CLOCKTICK _SC_CLK_TCK +#endif + +#if (defined(__hpux) || defined(solaris)|| defined(SOLARIS23_UP)) +#define CLOCKTICK CLK_TCK; +#endif +#else +#define RESOURCES rusage +#define GETRUSAGE(loc) getrusage(RUSAGE_CHILDREN,loc) +#define CLOCKTICK +#endif + +#if (defined( solaris) || defined(SOLARIS23_UP)) +#ifdef bcmp +#undef bcmp +#endif +#define bcmp(s1, s2, n) memcmp ((s1), (s2), (n)) + +#ifdef bcopy +#undef bcopy +#endif +#define bcopy(s, d, n) memcpy ((d), (s), (n)) + +#ifdef bzero +#undef bzero +#endif +#define bzero(s, n) memset ((s), 0, (n)) + +#ifdef index +#undef index +#endif +#define index(s, c) strchr(s, c) + +#ifdef rindex +#undef rindex +#endif +#define rindex(s, c) strrchr(s, c) + +/* this is no longer used in solaris, but then we have no rusage-information */ +#ifdef wait3 +#undef wait3 +#endif +#define wait3(s, o, r) waitpid(-1, s, o) + +#endif + + +/* Directory structure definitions */ + +#if (defined(_AIX) || defined(__osf__) || defined(_UNICOS) || defined(sun) || defined(solaris) || defined(SOLARIS23_UP)) +#define DIRENT dirent + struct dirent *readdir(); +#else +#define DIRENT direct +#ifndef NeXT + struct direct *readdir(); +#endif +#endif + +/* Temporary filename interface */ +#if __convex__ +#define TEMPNAM tmpnam((char *)NULL) +char *tmpnam(); +#else +#define TEMPNAM tempnam((char *)NULL,(char *)NULL) +char *tempnam(); +#endif + +#if (defined( linux ) && defined(__alpha ) ) +#define ADDRLEN size_t +#else +#define ADDRLEN int +#endif + +#ifndef _NFILE +#define _NFILE 32 +#endif + +/*********************************************************/ +/* Logging macros from hell */ +/*********************************************************/ + +#define FREE(x) if(x){free( (char *)x); x=NULL;} + +#define READ_WRITE_MACRO_DEFS int str_len=0;int bytes_written=0;\ +int ii=0;int bytes_read=0;string tmpp_str + +#define WRITE_INT(x,y) if (dqs_writenbytes(x,y,INTSIZE)!=INTSIZE) {\ +WARNING((DQS_EVENT,"dqs_writenbytes() returned an error"));\ +DEXITE;return(-1);}else{bytes_written+=INTSIZE;} + +#define WRITE_STR(x,y) str_len=strlen(y);str_len++;\ +WRITE_INT(x,&str_len);ii=dqs_writenbytes(x,y,str_len);\ +DPRINTF((DQS_EVENT,"dqs_writenbytes returned %d str_len = %d",ii,str_len))\ +if (ii!=str_len) {WARNING((DQS_EVENT,"error writting string"));\ +DEXITE;return(-1);}else{bytes_written+=str_len;} + +#define READ_INT(x,y) if (dqs_readnbytes(x,y,INTSIZE)!=INTSIZE) {\ +WARNING((DQS_EVENT,"dqs_readnbytes() returned an error"));DEXITE;return(NULL);}\ +else{bytes_read+=INTSIZE;} + +#define READ_STR(x,y)READ_INT(x,&str_len);ii=dqs_readnbytes(x,tmpp_str,str_len);if(ii!=str_len){\ +WARNING((DQS_EVENT,"error reading string"));DEXITE;return(NULL);}\ +else{y=dqs_string_insert(y,tmpp_str);bytes_read+=str_len;} + +/* DON'T TOUCH THESE! */ +#define NIBBLE 8 +#define OFFSET 16*NIBBLE +#define CHUNK 262144 +#define NIBBLE_SIZE(x) ((1+((x-1)/NIBBLE))*NIBBLE) + +#define CHUNK_SIZE(x) ((1+((x-1)/CHUNK))*CHUNK) + +#define PACK_MACRO_DEFS int STR_LEN;char STRING[MAX_STRING_SIZE];u_long32 J + +/* a b c d e +PACKINT(head_ptr,cur_ptr,int,bytes_packed,mem_size); +*/ + +#define PACKINT(a,b,c,d,e)\ + if ((d+INTSIZE)>e)\ + {\ + e+=CHUNK;\ + a=dqs_realloc(a,e);\ + if (!a)\ + {\ + CRITICAL((DQS_EVENT,"dqs_realloc() failure in PACKINT()"));\ + abort();\ + }\ + b=(a);\ + b+=(d);\ + }\ + J=htonl(c);\ + bcopy(&J,b,INTSIZE);\ + b=(b+INTSIZE);\ + d+=INTSIZE; + + +/* a b c d e +PACKSTR(head_ptr,cur_ptr,str,bytes_packed,mem_size); +*/ + + +#define PACKSTR(a,b,c,d,e)\ + if (!c) STR_LEN=1; \ + else { \ + STR_LEN=strlen(c);\ + STR_LEN++; } \ + if ((d+STR_LEN)>e)\ + {\ + e+=CHUNK;\ + a=dqs_realloc(a,e);\ + if (!a)\ + {\ + CRITICAL((DQS_EVENT,"dqs_realloc() failure in PACKSTR()"));\ + abort();\ + }\ + b=(a);\ + b+=(d);\ + }\ + if (c) bcopy(c,b,STR_LEN);\ + else bcopy(&dqs_zero,b,STR_LEN); \ + b+=STR_LEN;\ + d+=STR_LEN; + +/* a b c d e f +PACKBUF(head_ptr,cur_ptr,buf_ptr,buf_size,bytes_packed,mem_size); +*/ + +#define PACKBUF(a,b,c,d,e,f)\ + if ((d+e)>f)\ + {\ + f+=CHUNK_SIZE(d);\ + a=dqs_realloc(a,f);\ + if (!a)\ + {\ + CRITICAL((DQS_EVENT,"dqs_realloc() failure in PACKBUF()"));\ + abort();\ + }\ + b=(a);\ + b+=(e);\ + }\ + bcopy(c,b,d);\ + b+=(d);\ + e+=(d); + + +/* a b c d +UNPACKINT(cur_ptr,int,bytes_unpacked,bytes_packed); +*/ +#define UNPACKINT(a,b,c,d)\ + if ((c+INTSIZE)>d)\ + {\ + CRITICAL((DQS_EVENT,"error in UNPACKINT()"));\ + abort();\ + }\ + bcopy(a,&b,INTSIZE);\ + b=ntohl(b);\ + a+=INTSIZE;\ + c+=INTSIZE; + + +/* a b c d +UNPACKSTR(cur_ptr,str,bytes_unpacked,bytes_packed); +*/ +#define UNPACKSTR(a,b,c,d)\ + if (!a[0]) STR_LEN=1; \ + else { \ + STR_LEN=strlen(a);\ + STR_LEN++;\ + } \ + if ((STR_LEN+c)>d)\ + {\ + CRITICAL((DQS_EVENT,"error in UNPACKSTR()"));\ + abort();\ + }\ + FREE(b); \ +if (a[0]) { \ + bcopy(a,STRING,STR_LEN);\ + b=dqs_string_insert(NULL,STRING); } \ + else b=NULL; \ + a+=STR_LEN;\ + c+=STR_LEN; + +/* a b c d e +UNPACKBUF(cur_ptr,buf_ptr,buf_size,bytes_unpacked,bytes_packed); +*/ + +#define UNPACKBUF(a,b,c,d,e)\ + if ((c+d)>e)\ + {\ + CRITICAL((DQS_EVENT,"error in UNPACKBUF()"));\ + abort();\ + }\ + b=dqs_malloc(c);\ + bcopy(a,b,c);\ + a+=c;\ + d+=c; + + +#define CRITICAL(x) sprintf x;dqs_log(LOG_CRIT,DQS_EVENT,__FILE__,DQS_FUNC,__LINE__) +#define ERROR(x) sprintf x;dqs_log(LOG_ERR,DQS_EVENT,__FILE__,DQS_FUNC,__LINE__) +#define WARNING(x) sprintf x;dqs_log(LOG_WARNING,DQS_EVENT,__FILE__,DQS_FUNC,__LINE__) +#define NOTICE(x) sprintf x;dqs_log(LOG_NOTICE,DQS_EVENT,__FILE__,DQS_FUNC,__LINE__) +#define INFO(x) sprintf x;dqs_log(LOG_INFO,DQS_EVENT,__FILE__,DQS_FUNC,__LINE__) + +#ifdef DQS_COMPILE_DEBUG + +#define DENTER_MAIN(x) \ + int LOG_LEVEL=LOG_DEBUG,DQS_OINDENT; \ + string DQS_FUNC,DQS_EVENT,ACK_EVENT; \ + dqs_list_type LISTEL; \ + bzero((char *)&conf,sizeof(conf)); \ + bzero((char *)&me,sizeof(me)); \ + conf.logfacility=LOGFACILITY; \ + DQS_FUNC[0]=0;\ + dqs_mini_setup(argv[0]); \ + if (getenv("EXT_DEBUG")) \ + {DEBUG_LOGLEVEL=LOG_EXTDEBUG;DEBUG_ON=TRUE;} \ + else if (getenv("DEBUG")) \ + {DEBUG_LOGLEVEL=LOG_DEBUG;DEBUG_ON=TRUE;} \ + else \ + DEBUG_LOGLEVEL=0; \ + if (DEBUG_ON)\ + {\ + strcpy x;\ + strcpy(DQS_FUNC,DQS_EVENT);\ + DQS_OINDENT=DEBUG_INDENT;\ + DEBUG_INDENT+=8;\ + sprintf(DQS_EVENT,"--> %s()",DQS_FUNC);\ + dqs_log(LOG_LEVEL,DQS_EVENT,__FILE__,DQS_FUNC,__LINE__);\ + } + +#define DENTER(x)\ + int LOG_LEVEL=LOG_DEBUG,DQS_OINDENT; \ + string DQS_FUNC,DQS_EVENT,ACK_EVENT; \ + dqs_list_type LISTEL; \ + DQS_FUNC[0]=0;\ + if (EXT_DEBUG_ON|DEBUG_ON)\ + {\ + strcpy x;\ + strcpy(DQS_FUNC,DQS_EVENT);\ + DQS_OINDENT=DEBUG_INDENT;\ + DEBUG_INDENT+=8;\ + sprintf(DQS_EVENT,"--> %s()",DQS_FUNC);\ + dqs_log(LOG_LEVEL,DQS_EVENT,__FILE__,DQS_FUNC,__LINE__);\ + } + +#define DENTER_EXT(x)\ + int LOG_LEVEL=LOG_EXTDEBUG,DQS_OINDENT; \ + string DQS_FUNC,DQS_EVENT,ACK_EVENT; \ + dqs_list_type LISTEL; \ + DQS_FUNC[0]=0;\ + if (EXT_DEBUG_ON|DEBUG_ON)\ + {\ + strcpy x;\ + strcpy(DQS_FUNC,DQS_EVENT);\ + DQS_OINDENT=DEBUG_INDENT;\ + DEBUG_INDENT+=8; \ + sprintf(DQS_EVENT,"--> %s()",DQS_FUNC);\ + dqs_log(LOG_LEVEL,DQS_EVENT,__FILE__,DQS_FUNC,__LINE__);\ + } + +#define DPRINTF(x)\ + if (DEBUG_ON)\ + {\ + sprintf x;\ + dqs_log(LOG_LEVEL,DQS_EVENT,__FILE__,DQS_FUNC,__LINE__);\ + } + +#define DTRACE\ + if (DEBUG_ON)\ + {\ + sprintf(DQS_EVENT,"TRACE");\ + dqs_log(LOG_LEVEL,DQS_EVENT,__FILE__,DQS_FUNC,__LINE__);\ + } + +#define DTRACEE\ + if (1)\ +{\ + sprintf(DQS_EVENT,"TRACE");\ + dqs_log(LOG_ERR,DQS_EVENT,__FILE__,DQS_FUNC,__LINE__);\ +} + +#define ACK(x)\ + sprintf x;\ + bzero((char *)&LISTEL,sizeof(LISTEL));\ + LISTEL.status=DQS_ACK;\ + LISTEL.str0=dqs_string_insert(NULL,ACK_EVENT);\ + reply_head=dqs_insert(DQS_STR0,TAIL,reply_head,&LISTEL); + +#define NAK(x)\ + sprintf x;\ + bzero((char *)&LISTEL,sizeof(LISTEL));\ + LISTEL.status=DQS_NAK;\ + LISTEL.str0=dqs_string_insert(NULL,ACK_EVENT);\ + reply_head=dqs_insert(DQS_STR0,TAIL,reply_head,&LISTEL); + +#define DEXIT\ + if (DEBUG_ON)\ + {\ + sprintf(DQS_EVENT,"<-- %s()",DQS_FUNC);\ + dqs_log(LOG_LEVEL,DQS_EVENT,__FILE__,DQS_FUNC,__LINE__);\ + DEBUG_INDENT=DQS_OINDENT;\ + } + +#define DEXITE\ + if (DEBUG_ON)\ + {\ + sprintf(DQS_EVENT,"<-- %s() *** ERROR ***",DQS_FUNC);dqs_log(LOG_LEVEL,DQS_EVENT,__FILE__,DQS_FUNC,__LINE__);\ + DEBUG_INDENT=DQS_OINDENT;\ + } + +#else +#define DENTER(x) {} +#define DTRACE {} +#define DPRINTF(x){} +#define DEXIT {} +#endif + + +#if defined(_AIX) || defined(SVR3) +#define DQS_ASSERT(x) if x ; else {dqs_log(LOG_CRIT, # x ,__FILE__,DQS_FUNC,__LINE__);dqs_log(LOG_CRIT,"unrecoverable error - contact systems manager",__FILE__,DQS_FUNC,__LINE__);abort();} +#else +#define DQS_ASSERT(x) if x ; else {dqs_log(LOG_CRIT,"unrecoverable error - contact systems manager",__FILE__,DQS_FUNC,__LINE__);abort();} +#endif + +#define DQS_EXIT(x)\ + if (x==DQS_ACK)\ + exit(0);\ + else\ + exit(-1); + +/******************************************************************************/ +/* misc flags/attribute defines */ + +#define NO_OPT 0 +#define a_OPT 1 +#define A_OPT 2 +#define B_OPT 3 +#define c_OPT 4 +#define cell_OPT 5 +#define C_OPT 6 +#define e_OPT 7 +#define par_OPT 8 +#define E_OPT 9 +#define f_OPT 10 +#define h_OPT 11 +#define hard_OPT 12 +#define j_OPT 13 +#define k_OPT 14 +#define l_OPT 15 +#define m_OPT 16 +#define master_OPT 17 +#define M_OPT 18 +#define N_OPT 19 +#define o_OPT 20 +#define O_OPT 21 +#define p_OPT 22 +#define q_OPT 23 +#define Q_OPT 24 +#define r_OPT 25 +#define s_OPT 26 +#define soft_OPT 27 +#define S_OPT 28 +#define u_OPT 29 +#define v_OPT 30 +#define verify_OPT 31 +#define V_OPT 32 +#define z_OPT 33 +#define DESTIN_OPR 34 +#define JOB_ID_OPR 35 +#define MESSAGE_OPR 36 +#define SCRIPT_OPR 37 +#define SRVR_NM_OPR 38 +#define soc_OPT 39 +#define xsoc_OPT 40 +#define help_OPT 41 +#define cwd_OPT 42 +#define ext_OPT 43 +#define ul_OPT 44 +#define reauth_OPT 45 +#define notify_OPT 46 +#define passwd_OPT 47 +#define Passwd_OPT 48 +#define d_OPT 49 +#define us_OPT 50 +#define hold_jid_OPT 51 + +#define ac_OPT 101 +#define ah_OPT 102 +#define am_OPT 103 +#define ao_OPT 104 +#define aq_OPT 105 +#define au_OPT 106 +#define Aq_OPT 107 +#define cq_OPT 108 +#define dc_OPT 109 +#define dh_OPT 110 +#define dm_OPT 111 +#define do_OPT 112 +#define dq_OPT 113 +#define du_OPT 114 +#define kq_OPT 115 +#define kqs_OPT 116 +#define mc_OPT 117 +#define mconf_OPT 118 +#define mq_OPT 119 +#define qmon_OPT 120 +#define sc_OPT 121 +#define scl_OPT 122 +#define sconf_OPT 123 +#define sh_OPT 124 +#define sm_OPT 125 +#define so_OPT 126 +#define sq_OPT 127 +#define sql_OPT 128 +#define su_OPT 129 +#define sul_OPT 130 +#define srl_OPT 131 +#define jid_OPT 132 +#define clean_OPT 133 +#define gc_OPT 134 /* dummy from qconf to qmasster to get complex */ +#define acons_OPT 135 /* add consumable */ +#define mcons_OPT 136 /* modify consumable */ +#define dcons_OPT 137 /* delete consumable */ +#define scons_OPT 138 +#define sconsl_OPT 139 +#define gcons_OPT 140 +#define refr_OPT 141 /* refresh dqs_execd */ +#define shutd_OPT 142 /* shutdown dqs_execd */ +#define rc_OPT 143 /* return consumable */ +#define F_OPT 144 /* force submission of a job (qsub ) */ +#define g_OPT 145 /* geometry option */ +/* who */ +#define QALTER 1 +#define QCONF 2 +#define QDEL 3 +#define QHOLD 4 +#define QIDLE 5 +#define QMASTER 6 +#define QMOD 7 +#define QMOVE 8 +#define QMSG 9 +#define QRERUN 10 +#define QRLS 11 +#define QSELECT 12 +#define QSH 13 +#define QSIG 14 +#define QSTAT 15 +#define QSUB 16 +#define DQS_EXECD 17 +#define MAX_ANCILLARY 17 +#define ALL_OPT 19 + +/* Note: do not include QUSAGE before ALL_OPT! */ +/* ALL_OPT is used by "dqs_options" while "qusage" */ +/* is part of "XSRC" */ + +#define QUSAGE 20 +#define DCMD 21 +#define DSH 22 + +/* macros used in parsing */ +#define VALID_OPT(opt,who) (dqs_options[opt][who]) + +/****************************************************************/ +/* DQS list types */ + +#define DQS_TYPE 0x00000001 +#define DQS_INT0 0x00000002 +#define DQS_INT1 0x00000004 +#define DQS_INT2 0x00000010 +#define DQS_INT3 0x00000020 +#define DQS_STR0 0x00000040 +#define DQS_STR1 0x00000100 +#define DQS_STR2 0x00000200 +#define DQS_STR3 0x00000400 +#define DQS_RUSAGE 0x00001000 +#define DQS_QUEUE 0x00002000 +#define DQS_CONF 0x00004000 +#define DQS_JOB 0x00010000 +#define DQS_ME 0x00020000 +#define DQS_CHAIN 0x00040000 + +#define DQS_STDIN 0x00100000 +#define DQS_STDOUT 0x00200000 +#define DQS_STDERR 0x00400000 +#define DQS_DEBUG 0x01000000 +#define DQS_HOSTS 0x02000000 +#define DQS_SHELL 0x04000000 +#define DQS_ACCOUNT 0x10000000 +#define DQS_PAR_STDOUT 0x20000000 +#define DQS_PAR_STDERR 0x40000000 + +/*patch from Ron Lee*/ +#define VALID(a,b) ((a)&(b)) +#define SETBIT(a,b) ((b)=(a)|(b)); +#define CLEARBIT(a,b) ((b)=~(a)&(b)); + + +/****************************************************************/ +/* DQS "op" types */ + +#define EQ_OP 0x00000001 +#define GE_OP 0x00000002 +#define GT_OP 0x00000004 +#define LT_OP 0x00000008 +#define LE_OP 0x00000010 +#define NE_OP 0x00000020 +#define NOT_OP 0x00000040 +#define AND_OP 0x00000080 +#define OR_OP 0x00000100 +#define STREQ_OP 0x00000200 +#define END_OP 0x00001000 +/****************************************************************/ +/* misc */ + +#define GRANTED 0 +#define REAPED 3 +#define SLAVE 1 +#define MIN_BACKOFF_TIME 2 +#define MAX_BACKOFF_TIME 10 +#define ABORT -1 +#define NEGATE_CLASS '^' +/*Code via Doug Gibson*/ +#define TOKEN_SIZE 2048 +#define MAX_KEY_SIZE 100 +#define DQS_NRETRIES 3 +#define MAX_KLOG_TIME 15 +#define DQS_MAXNAMELEN MAX_STRING_SIZE /* Max str length allowed in dsh/dshd */ +#define MAX_RLIMIT 0x7fffffff + +/****************************************************************/ +/* DQS Format Macros */ + +#define STATFILE_FPRINTF_FORMAT "%d:%s:%s:%d:%d:%d:%s:%s\n" + +#define STATFILE_FSCANF_FORMAT "\n%d:%[^:]:%[^:]:%d:%d:%d:%[^:]:%[^:\n]" + +#define STATFILE_FSCANF_COUNT 8 + +#define STATFILE_FSCANF_VARS \ + &Stats->time, \ + Stats->qname, \ + Stats->hostname, \ + &Stats->load_avg, \ + &Stats->qty, \ + &Stats->qty_active, \ + qcomplex_str, \ + Stats->states + +#define ACTFILE_FPRINTF_FORMAT \ +"%s:%s:%ld:%s:%s:%s:%s:%s:%s:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld\n" + +#define ACTFILE_FSCANF_FORMAT \ +"\n%[^:]:%[^:]:%ld:%[^:]:%[^:]:%[^:]:%[^:]:%[^:]:%[^:]:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld:%ld" + +#define ACTFILE_FSCANF_COUNT 33 + +#define ACTFILE_FPRINTF_VARS \ + d->qname, \ + d->hostname, \ + d->master, \ + qcomplex_str, \ + d->group, \ + d->owner, \ + d->job_name, \ + d->dqs_job_name, \ + d->account, \ + d->priority, \ + d->job_number, \ + d->submission_time, \ + d->start_time, \ + d->end_time, \ + d->exit_status, \ + d->ru_wallclock, \ + d->ru_utime, \ + d->ru_stime, \ + d->ru_maxrss, \ + d->ru_ixrss, \ + d->ru_ismrss, \ + d->ru_idrss, \ + d->ru_isrss, \ + d->ru_minflt, \ + d->ru_majflt, \ + d->ru_nswap, \ + d->ru_inblock, \ + d->ru_oublock, \ + d->ru_msgsnd, \ + d->ru_msgrcv, \ + d->ru_nsignals, \ + d->ru_nvcsw, \ + d->ru_nivcsw + +#define ACTFILE_FSCANF_VARS \ + d->qname, \ + d->hostname, \ + &d->master, \ + qcomplex_str, \ + d->group, \ + d->owner, \ + d->job_name, \ + d->dqs_job_name, \ + d->account, \ + &d->priority, \ + &d->job_number, \ + &d->submission_time, \ + &d->start_time, \ + &d->end_time, \ + &d->exit_status, \ + &d->ru_wallclock, \ + &d->ru_utime, \ + &d->ru_stime, \ + &d->ru_maxrss, \ + &d->ru_ixrss, \ + &d->ru_ismrss, \ + &d->ru_idrss, \ + &d->ru_isrss, \ + &d->ru_minflt, \ + &d->ru_majflt, \ + &d->ru_nswap, \ + &d->ru_inblock, \ + &d->ru_oublock, \ + &d->ru_msgsnd, \ + &d->ru_msgrcv, \ + &d->ru_nsignals, \ + &d->ru_nvcsw, \ + &d->ru_nivcsw + +/****************************************************************/ +/* DQS Development Macros */ + +#define GETFD(a) close(creat("RMME",0755));a=open("RMME",O_RDWR) + +#define RESETFD(a) lseek(a,0,SEEK_SET) + +#if (defined(sun) || defined(solaris) || defined(SOLARIS23_UP)) +#define volatile /* comment this out if a real compiler */ +#define labs abs /* ditto - way to go SUN! */ +#endif + +#ifdef NeXT +#define sigaction sigvec +#define sa_handler sv_handler +#define sa_mask sv_mask +#define sa_flags sv_flags +#define sigset_t int +#endif + +#ifndef pid_t +#define pid_t int +#endif + +#ifndef gid_t +#define gid_t int +#endif + +#ifndef mode_t +#define mode_t int +#endif + +/* + this isn't the way to do it but since I've yet to figure out + how you are suppose to differentiate SunOS 4/5... + + course the SunPro demo compiler I saw doesn't define "__svr4__" + + funny how it only takes a hour to port to every other arc, + (all totalled!) then you spend days porting to SunOSes + */ + +#ifdef __svr4__ +#ifdef sun +#define sloaris +#endif +#endif diff --git a/dqs-PLD-dqs.h b/dqs-PLD-dqs.h new file mode 100755 index 0000000..241be83 --- /dev/null +++ b/dqs-PLD-dqs.h @@ -0,0 +1,71 @@ +#define STATIC_CONFIGURATION FALSE +#define CONF_FILE "/etc/dqs/conf_file" +#define RESOLVE_FILE "/etc/dqs/resolve_file" +#define KEY_FILE "/etc/dqs/key_file" +#define AFS FALSE +#define ERR_FILE "/var/log/dqs/err_file" +#define LOG_FILE "/var/log/dqs/log_file" +#define QMASTER_SPOOL_DIR "/var/spool/dqs" +#define EXECD_SPOOL_DIR "/var/spool/dqs" +#define DEFAULT_CELL "localdomain" +#define RESERVED_PORT TRUE +#define DQS_EXECD_SERVICE "dqs_execd" +#define QMASTER_SERVICE "dqs_qmaster" +#define INTERCELL_SERVICE "dqs_intercell" +#define KLOG "/usr/local/bin/klog" +#define REAUTH_TIME 60 +#define MAILER "/bin/mail" +#define DQS_BIN "/usr/bin" +#define ADMINISTRATOR "postmater@localhost" +#define DEFAULT_ACCOUNT "GENERAL" +#define DEFAULT_HOST "localhost" +#define LOGMAIL FALSE +#define DEFAULT_RERUN FALSE +#define DEFAULT_SORT_SEQ_NO FALSE +#define SYNC_IO FALSE +#define USER_ACCESS ACCESS_FREE +#define LOGFACILITY LOG_VIA_SYSLOG +#define LOGLEVEL LOG_INFO +#define MIN_UID 1000 +#define MIN_GID 100 +#define MAXUJOBS 100 +#define OUTPUT_HANDLING LEAVE_OUTPUT_FILES +#define ADDON_SCRIPT NONE +#define ADDON_INFO NONE +#define LOAD_LOG_TIME 30 +#define STAT_LOG_TIME 600 +#define SCHEDULE_TIME 60 +#define MAX_UNHEARD 90 +#define ALARMS 3 +#define ALARMM 3 +#define ALARML 3 +#define MAIL_HAS_SUBJ_LINE TRUE +#define DEFAULT_MANAGER "root" +#define PVM_ROOT "" +#ifdef SUN +#define volatile +#define labs abs +#endif +#define SLAVE_LOOP_TIME "200" +#define LINK_FILE_PATH "" +#define COPY_FILE_DELAY "300" +/* To use the link strategy you must ensure, that */ +/* (1) a file with the value of TMP_LINK_OUTPUT_FILES exists in */ +/* the directory EXECD_SPOOL_DIR and contains the required */ + /* global path to the directory EXECD_SPOOL_DIR/local. */ + /* To be able to access this directory from any node via */ + /* NFS/AFS it is referenced using the contents of the file */ + /* EXECD_SPOOL_DIR/TMP_LINK_OUTPUT_FILES */ + /* as the head of the pathname. For example: */ + /* We use the NFS automounter and have any EXECD_SPOOL_DIR */ + /* imported as /import/dqs_execd_spool. where */ + /* hostname is the name of the involved worker node. */ + /* So we created on the worker node 'rznb1' a file */ + /* EXECD_SPOOL_DIR/netpath */ + /* with the contents */ + /* /import/dqs_execd_spool.rznb1 */ + /* and set the above #define to */ + /* #define TMP_LINK_OUTPUT_FILES 'netpath' */ + /* (2) all directories EXECD_SPOOL_DIR are accessible from each */ + /* node a user can place his output files */ + /*-----------------------------------------------------------------*/ diff --git a/dqs-PLD-resolve_file b/dqs-PLD-resolve_file new file mode 100755 index 0000000..4ca629a --- /dev/null +++ b/dqs-PLD-resolve_file @@ -0,0 +1,8 @@ +# NOTE! blank lines NOT permitted # +# NOTE! fields must be separated by one(1) AND ONLY one space # +# 1st field = cell_name +# 2nd field = primary qmaster +# 3rd field = primary qmaster alias +# 4th field = secondary qmaster +# 5th field = secondary qmaster alias +# scri.fsu.edu lnx4 lnx4.scri.fsu.edu NONE NONE diff --git a/dqs-install.patch b/dqs-install.patch new file mode 100644 index 0000000..11929c4 --- /dev/null +++ b/dqs-install.patch @@ -0,0 +1,16 @@ +diff -urN DQS3/UTIL/install DQS3-new/UTIL/install +--- DQS3/UTIL/install Tue Aug 18 16:39:14 1998 ++++ DQS3-new/UTIL/install Mon Mar 19 17:02:22 2001 +@@ -29,12 +29,6 @@ + + echo "------------$CP $1 $2" + $CP $1 $2 +-echo "------------$CHOWN $2" +-$CHOWN $2 +-echo "------------$CHGRP $2" +-$CHGRP $2 +-echo "------------$CHMOD $2" +-$CHMOD $2 + + exit 0 +