Changeset 213
- Timestamp:
- 04/07/10 15:40:00 (14 years ago)
- Location:
- trunk
- Files:
-
- 1 deleted
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/setup.py.in
r197 r213 47 47 48 48 setup ( name = 'pbs_python', 49 version = '3. 2.5',49 version = '3.8.0', 50 50 description = 'openpbs/torque python interface', 51 51 author = 'Bas van der Vlies', -
trunk/src/log.h
r159 r213 1 1 /* 2 * $Id$3 *4 2 * OpenPBS (Portable Batch System) v2.3 Software License 5 * 6 * Copyright (c) 1999-200 2Veridian Information Solutions, Inc.3 * 4 * Copyright (c) 1999-2000 Veridian Information Solutions, Inc. 7 5 * All rights reserved. 8 * 6 * 9 7 * --------------------------------------------------------------------------- 10 8 * For a license to use or redistribute the OpenPBS software under conditions 11 9 * other than those described below, or to purchase support for this software, 12 10 * please contact Veridian Systems, PBS Products Department ("Licensor") at: 13 * 11 * 14 12 * www.OpenPBS.org +1 650 967-4675 sales@OpenPBS.org 15 13 * 877 902-4PBS (US toll-free) 16 14 * --------------------------------------------------------------------------- 17 * 15 * 18 16 * This license covers use of the OpenPBS v2.3 software (the "Software") at 19 17 * your site or location, and, for certain users, redistribution of the … … 21 19 * OpenPBS v2.3 in source and binary forms, with or without modification, 22 20 * are permitted provided that all of the following conditions are met. 23 * After December 31, 200 3, only conditions 3-6 must be met:24 * 21 * After December 31, 2001, only conditions 3-6 must be met: 22 * 25 23 * 1. Commercial and/or non-commercial use of the Software is permitted 26 24 * provided a current software registration is on file at www.OpenPBS.org. 27 25 * If use of this software contributes to a publication, product, or 28 26 * service, proper attribution must be given; see www.OpenPBS.org/credit.html 29 * 27 * 30 28 * 2. Redistribution in any form is only permitted for non-commercial, 31 29 * non-profit purposes. There can be no charge for the Software or any … … 33 31 * expectation of revenue generated as a consequence of redistributing 34 32 * the Software. 35 * 33 * 36 34 * 3. Any Redistribution of source code must retain the above copyright notice 37 35 * and the acknowledgment contained in paragraph 6, this list of conditions 38 36 * and the disclaimer contained in paragraph 7. 39 * 37 * 40 38 * 4. Any Redistribution in binary form must reproduce the above copyright 41 39 * notice and the acknowledgment contained in paragraph 6, this list of 42 40 * conditions and the disclaimer contained in paragraph 7 in the 43 41 * documentation and/or other materials provided with the distribution. 44 * 42 * 45 43 * 5. Redistributions in any form must be accompanied by information on how to 46 44 * obtain complete source code for the OpenPBS software and any … … 50 48 * and additions to the Software must be freely redistributable by any party 51 49 * (including Licensor) without restriction. 52 * 50 * 53 51 * 6. All advertising materials mentioning features or use of the Software must 54 52 * display the following acknowledgment: 55 * 53 * 56 54 * "This product includes software developed by NASA Ames Research Center, 57 * Lawrence Livermore National Laboratory, and Veridian Information 55 * Lawrence Livermore National Laboratory, and Veridian Information 58 56 * Solutions, Inc. 59 57 * Visit www.OpenPBS.org for OpenPBS software support, 60 58 * products, and information." 61 * 59 * 62 60 * 7. DISCLAIMER OF WARRANTY 63 * 61 * 64 62 * THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. ANY EXPRESS 65 63 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 66 64 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT 67 65 * ARE EXPRESSLY DISCLAIMED. 68 * 66 * 69 67 * IN NO EVENT SHALL VERIDIAN CORPORATION, ITS AFFILIATED COMPANIES, OR THE 70 68 * U.S. GOVERNMENT OR ANY OF ITS AGENCIES BE LIABLE FOR ANY DIRECT OR INDIRECT, … … 75 73 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 76 74 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 77 * 75 * 78 76 * This license will be governed by the laws of the Commonwealth of Virginia, 79 77 * without reference to its choice of law rules. … … 81 79 82 80 /* 83 * @(#) OpenPbs version: log.h,v 2.2.6.7 2001/12/05 00:38:11 hender Exp84 */85 86 /*87 81 * include file for error/event logging 88 82 */ 89 83 90 /* 91 * HvB: openpbs uses 1024 92 */ 93 #define LOG_BUF_SIZE 409684 #ifndef LOG_H 85 #define LOG_H 86 87 #define LOG_BUF_SIZE 16384 94 88 95 89 /* The following macro assist in sharing code between the Server and Mom */ … … 99 93 ** Set up a debug print macro. 100 94 */ 101 #ifdef 102 #define DBPRT(x) printf x;95 #ifdef NDEBUG 96 #define DBPRT(x) 103 97 #else 104 #define DBPRT(x) 105 #endif 98 #define DBPRT(x) printf x; 99 #endif /* END NDEBUG */ 100 101 #if SYSLOG 102 #include <syslog.h> 103 #endif /* SYSLOG */ 104 105 #if !SYSLOG 106 /* define syslog constants that can be used in code regardless of whether we 107 * are using syslog or not! */ 108 109 #ifndef LOG_EMERG 110 #define LOG_EMERG 1 111 #endif 112 113 #ifndef LOG_ALERT 114 #define LOG_ALERT 2 115 #endif 116 117 #ifndef LOG_CRIT 118 #define LOG_CRIT 3 119 #endif 120 121 #ifndef LOG_ERR 122 #define LOG_ERR 4 123 #endif 124 125 #ifndef LOG_ERR 126 #define LOG_ERR 5 127 #endif 128 129 #ifndef LOG_WARNING 130 #define LOG_WARNING 6 131 #endif 132 133 #ifndef LOG_NOTICE 134 #define LOG_NOTICE 7 135 #endif 136 137 #ifndef LOG_INFO 138 #define LOG_INFO 8 139 #endif 140 141 #ifndef LOG_DEBUG 142 #define LOG_DEBUG 9 143 #endif 144 #endif /* SYSLOG */ 106 145 107 146 extern long *log_event_mask; 108 147 109 extern void log_close(int close_msg); 110 extern void log_err(int err, char *func, char *text); 111 extern void log_event(int type, int class_int, char *id, char *text); 112 extern int log_open(char *name, char *directory); 113 extern void log_record(int type, int class_int, char *id, char *text); 114 extern void log_roll(int size); 148 /* set this to non-zero in calling app if errors go to stderr */ 149 extern int chk_file_sec_stderr; 150 151 152 extern void log_close(int); 153 extern void log_err(int, char *, char *); 154 extern void log_event(int, int, char *, char *); 155 extern int log_open(char *, char *); 156 extern void log_record(int, int, char *, char *); 157 extern void log_roll(int); 115 158 extern long log_size(void); 159 116 160 extern char log_buffer[LOG_BUF_SIZE]; 117 extern int setup_env(char *filename); 118 119 /* HvB: Bas van der Vlies 120 * Must be chk_file_sec 121 extern int chk_path_sec(char *path, int dir, int sticky, int bad, int); 122 */ 123 extern int chk_file_sec(char *file, int dir, int sticky, int bad, int); 161 162 extern int chk_file_sec(char *, int, int, int, int, char *); 163 extern int setup_env(char *); 164 165 #ifdef TORQUE_2_4 166 extern void log_ext(int,char *,char *,int); 167 int log_init(char *, char *); 168 extern int log_remove_old(char *,unsigned long); 169 #endif 124 170 125 171 /* Event types */ 126 172 127 #define PBSEVENT_ERROR 0x0001 /* internal errors*/128 #define PBSEVENT_SYSTEM 0x0002/* system (server) events */129 #define PBSEVENT_ADMIN 0x0004 /* admin events*/130 #define PBSEVENT_JOB 0x0008 /* job related events*/131 #define PBSEVENT_JOB_USAGE 0x0010/* End of Job accounting */132 #define PBSEVENT_SECURITY 0x0020/* security violation events */133 #define PBSEVENT_SCHED 0x0040 /* scheduler events*/134 #define PBSEVENT_DEBUG 0x0080/* common debug messages */135 #define PBSEVENT_DEBUG2 0x0100/* less needed debug messages */136 #define PBSEVENT_FORCE 0x8000/* set to force a messag */173 #define PBSEVENT_ERROR 0x0001 /* internal errors */ 174 #define PBSEVENT_SYSTEM 0x0002 /* system (server) events */ 175 #define PBSEVENT_ADMIN 0x0004 /* admin events */ 176 #define PBSEVENT_JOB 0x0008 /* job related events */ 177 #define PBSEVENT_JOB_USAGE 0x0010 /* End of Job accounting */ 178 #define PBSEVENT_SECURITY 0x0020 /* security violation events */ 179 #define PBSEVENT_SCHED 0x0040 /* scheduler events */ 180 #define PBSEVENT_DEBUG 0x0080 /* common debug messages */ 181 #define PBSEVENT_DEBUG2 0x0100 /* less needed debug messages */ 182 #define PBSEVENT_FORCE 0x8000 /* set to force a messag */ 137 183 138 184 /* Event Object Classes, see array class_names[] in ../lib/Liblog/pbs_log.c */ 139 185 140 #define PBS_EVENTCLASS_SERVER 1 /* The server itself*/141 #define PBS_EVENTCLASS_QUEUE 2 /* Queues*/142 #define PBS_EVENTCLASS_JOB 3 /* Jobs*/143 #define PBS_EVENTCLASS_REQUEST 4 /* Batch Requests*/144 #define PBS_EVENTCLASS_FILE 5 /* A Job related File*/145 #define PBS_EVENTCLASS_ACCT 6 /* Accounting info*/146 #define PBS_EVENTCLASS_NODE 7 /* Nodes*/186 #define PBS_EVENTCLASS_SERVER 1 /* The server itself */ 187 #define PBS_EVENTCLASS_QUEUE 2 /* Queues */ 188 #define PBS_EVENTCLASS_JOB 3 /* Jobs */ 189 #define PBS_EVENTCLASS_REQUEST 4 /* Batch Requests */ 190 #define PBS_EVENTCLASS_FILE 5 /* A Job related File */ 191 #define PBS_EVENTCLASS_ACCT 6 /* Accounting info */ 192 #define PBS_EVENTCLASS_NODE 7 /* Nodes */ 147 193 148 194 /* Logging Masks */ 149 195 150 #define PBSEVENT_MASK 0x01ff 151 152 /* HvB: 196 #define PBSEVENT_MASK 0x01ff 197 198 /* definition's for pbs_log.c's log_remove_old() function */ 199 #define MAX_PATH_LEN 1024 /* maximum possible length of any path */ 200 #define SECS_PER_DAY 86400 201 202 #if !defined(TRUE) || !defined(FALSE) 203 #define TRUE 1 204 #define FALSE 0 205 #endif /* !defined(TRUE) || !defined(FALSE) */ 206 207 /* HvB: 153 208 * msg_daemonname is extern declared in liblog.a. So define it here 154 209 */ 155 210 char *msg_daemonname = "pbs_python"; 211 212 #endif /* ifndef LOG_H */ -
trunk/src/pbs_ifl.h
r161 r213 75 75 #define ATTR_c "Checkpoint" 76 76 #define ATTR_e "Error_Path" 77 #define ATTR_f "fault_tolerant" 77 78 #define ATTR_g "group_list" 78 79 #define ATTR_h "Hold_Types" … … 85 86 #define ATTR_q "destination" 86 87 #define ATTR_r "Rerunable" 88 #define ATTR_t "job_array_request" 89 #define ATTR_array_id "job_array_id" 87 90 #define ATTR_u "User_List" 88 91 #define ATTR_v "Variable_List" … … 95 98 #define ATTR_stagein "stagein" 96 99 #define ATTR_stageout "stageout" 100 #define ATTR_jobtype "jobtype" 97 101 98 102 /* additional job and general attribute names */ 99 103 100 #define ATTR_ctime "ctime" 101 #define ATTR_exechost "exec_host" 102 #define ATTR_mtime "mtime" 103 #define ATTR_qtime "qtime" 104 #define ATTR_session "session_id" 105 #define ATTR_euser "euser" 106 #define ATTR_egroup "egroup" 107 #define ATTR_hashname "hashname" 108 #define ATTR_hopcount "hop_count" 109 #define ATTR_security "security" 110 #define ATTR_sched_hint "sched_hint" 111 #define ATTR_substate "substate" 112 #define ATTR_name "Job_Name" 113 #define ATTR_owner "Job_Owner" 114 #define ATTR_used "resources_used" 115 #define ATTR_state "job_state" 116 #define ATTR_queue "queue" 117 #define ATTR_server "server" 118 #define ATTR_maxrun "max_running" 119 #define ATTR_total "total_jobs" 120 #define ATTR_comment "comment" 121 #define ATTR_cookie "cookie" 122 #define ATTR_qrank "queue_rank" 123 #define ATTR_altid "alt_id" 124 #define ATTR_etime "etime" 104 #define ATTR_ctime "ctime" 105 #define ATTR_exechost "exec_host" 106 #define ATTR_mtime "mtime" 107 #define ATTR_qtime "qtime" 108 #define ATTR_session "session_id" 109 #define ATTR_euser "euser" 110 #define ATTR_egroup "egroup" 111 #define ATTR_hashname "hashname" 112 #define ATTR_hopcount "hop_count" 113 #define ATTR_security "security" 114 #define ATTR_sched_hint "sched_hint" 115 #define ATTR_substate "substate" 116 #define ATTR_name "Job_Name" 117 #define ATTR_owner "Job_Owner" 118 #define ATTR_used "resources_used" 119 #define ATTR_state "job_state" 120 #define ATTR_queue "queue" 121 #define ATTR_server "server" 122 #define ATTR_maxrun "max_running" 123 #define ATTR_maxreport "max_report" 124 #define ATTR_total "total_jobs" 125 #define ATTR_comment "comment" 126 #define ATTR_cookie "cookie" 127 #define ATTR_qrank "queue_rank" 128 #define ATTR_altid "alt_id" 129 #define ATTR_etime "etime" 125 130 #define ATTR_exitstat "exit_status" 126 131 #define ATTR_forwardx11 "forward_x11" 127 132 #define ATTR_submit_args "submit_args" 128 #define ATTR_umask "umask" 133 #define ATTR_tokens "tokens" 134 #define ATTR_netcounter "net_counter" 135 #define ATTR_umask "umask" 136 #define ATTR_start_time "start_time" 137 #define ATTR_start_count "start_count" 138 #define ATTR_checkpoint_dir "checkpoint_dir" /* user specified directory for checkpoint files */ 139 #define ATTR_checkpoint_name "checkpoint_name" /* user specified name of checkpoint file */ 140 #define ATTR_checkpoint_time "checkpoint_time" /* timestamp of start of last checkpoint */ 141 #define ATTR_checkpoint_restart_status "checkpoint_restart_status" /* checkpoint restart status */ 142 #define ATTR_restart_name "restart_name" /* saved name of checkpoint restart file */ 143 #define ATTR_comp_time "comp_time" 144 #define ATTR_reported "reported" 145 #define ATTR_intcmd "inter_cmd" 146 147 #ifdef USEJOBCREATE 148 #define ATTR_pagg "pagg_id" 149 #endif /* USEJOBCREATE */ 129 150 130 151 /* additional queue attributes names */ 131 152 132 #define ATTR_aclgren "acl_group_enable" 133 #define ATTR_aclgroup "acl_groups" 134 #define ATTR_aclhten "acl_host_enable" 135 #define ATTR_aclhost "acl_hosts" 136 #define ATTR_acluren "acl_user_enable" 137 #define ATTR_acluser "acl_users" 138 #define ATTR_altrouter "alt_router" 139 #define ATTR_chkptmin "checkpoint_min" 140 #define ATTR_enable "enabled" 141 #define ATTR_fromroute "from_route_only" 142 #define ATTR_killdelay "kill_delay" 143 #define ATTR_maxgrprun "max_group_run" 144 #define ATTR_maxque "max_queuable" 145 #define ATTR_maxuserrun "max_user_run" 146 #define ATTR_qtype "queue_type" 147 #define ATTR_rescassn "resources_assigned" 148 #define ATTR_rescdflt "resources_default" 149 #define ATTR_rescmax "resources_max" 150 #define ATTR_rescmin "resources_min" 151 #define ATTR_rndzretry "rendezvous_retry" 152 #define ATTR_routedest "route_destinations" 153 #define ATTR_routeheld "route_held_jobs" 154 #define ATTR_routewait "route_waiting_jobs" 155 #define ATTR_routeretry "route_retry_time" 156 #define ATTR_routelife "route_lifetime" 157 #define ATTR_rsvexpdt "reserved_expedite" 158 #define ATTR_rsvsync "reserved_sync" 159 #define ATTR_start "started" 160 #define ATTR_count "state_count" 161 #define ATTR_number "number_jobs" 162 #define ATTR_acllogic "acl_logic_or" 163 #define ATTR_aclgrpslpy "acl_group_sloppy" 153 #define ATTR_aclgren "acl_group_enable" 154 #define ATTR_aclgroup "acl_groups" 155 #define ATTR_aclhten "acl_host_enable" 156 #define ATTR_aclhost "acl_hosts" 157 #define ATTR_acluren "acl_user_enable" 158 #define ATTR_acluser "acl_users" 159 #define ATTR_altrouter "alt_router" 160 #define ATTR_checkpoint_min "checkpoint_min" 161 #define ATTR_enable "enabled" 162 #define ATTR_fromroute "from_route_only" 163 #define ATTR_hostlist "hostlist" /* TORQUE only */ 164 #define ATTR_killdelay "kill_delay" 165 #define ATTR_maxgrprun "max_group_run" 166 #define ATTR_maxque "max_queuable" 167 #define ATTR_maxuserque "max_user_queuable" 168 #define ATTR_maxuserrun "max_user_run" 169 #define ATTR_qtype "queue_type" 170 #define ATTR_rescassn "resources_assigned" 171 #define ATTR_rescdflt "resources_default" 172 #define ATTR_rescmax "resources_max" 173 #define ATTR_rescmin "resources_min" 174 #define ATTR_rerunnable "restartable" /* TORQUE only */ 175 #define ATTR_rndzretry "rendezvous_retry" 176 #define ATTR_routedest "route_destinations" 177 #define ATTR_routeheld "route_held_jobs" 178 #define ATTR_routewait "route_waiting_jobs" 179 #define ATTR_routeretry "route_retry_time" 180 #define ATTR_routelife "route_lifetime" 181 #define ATTR_rsvexpdt "reserved_expedite" 182 #define ATTR_rsvsync "reserved_sync" 183 #define ATTR_start "started" 184 #define ATTR_count "state_count" 185 #define ATTR_number "number_jobs" 186 #define ATTR_acllogic "acl_logic_or" 187 #define ATTR_aclgrpslpy "acl_group_sloppy" 164 188 #define ATTR_keepcompleted "keep_completed" 165 189 #define ATTR_disallowedtypes "disallowed_types" 190 #define ATTR_is_transit "is_transit" 166 191 167 192 /* additional server attributes names */ … … 170 195 /* - create #define ATTR_* in include/pbs_ifl.h 171 196 - insert SRV_ATR_* in include/server.h 172 - add SRV_ATR_* in include/qmgr_svr_public.h197 - add ATTR_* in include/qmgr_svr_public.h 173 198 - insert structure in server/svr_attr_def.c 174 199 NOTE: structure must be in same relative position as SRV_ATR_* … … 179 204 #define ATTR_managers "managers" 180 205 #define ATTR_dfltque "default_queue" 206 #define ATTR_dispsvrsuffix "display_job_server_suffix" 207 #define ATTR_jobsuffixalias "job_suffix_alias" 181 208 #define ATTR_defnode "default_node" 182 209 #define ATTR_locsvrs "location_servers" … … 186 213 #define ATTR_mailfrom "mail_from" 187 214 #define ATTR_nodepack "node_pack" 215 #define ATTR_nodesuffix "node_suffix" 188 216 #define ATTR_operators "operators" 189 217 #define ATTR_queryother "query_other_jobs" … … 200 228 #define ATTR_polljobs "poll_jobs" 201 229 #define ATTR_downonerror "down_on_error" 230 #define ATTR_disableserveridcheck "disable_server_id_check" 202 231 #define ATTR_jobnanny "job_nanny" 203 232 #define ATTR_ownerpurge "owner_purge" … … 206 235 #define ATTR_maildomain "mail_domain" 207 236 #define ATTR_pbsversion "pbs_version" 208 #define ATTR_submithosts 237 #define ATTR_submithosts "submit_hosts" 209 238 #define ATTR_allownodesubmit "allow_node_submit" 239 #define ATTR_allowproxyuser "allow_proxy_user" 210 240 #define ATTR_autonodenp "auto_node_np" 211 241 #define ATTR_servername "server_name" 212 242 #define ATTR_logfilemaxsize "log_file_max_size" 213 243 #define ATTR_logfilerolldepth "log_file_roll_depth" 214 #define ATTR_nextjobnum "next_job_number" 244 #define ATTR_logkeepdays "log_keep_days" 245 #define ATTR_nextjobnum "next_job_number" 246 #define ATTR_extraresc "extra_resc" 247 #define ATTR_schedversion "sched_version" 248 #define ATTR_acctkeepdays "accounting_keep_days" 249 #define ATTR_lockfile "lock_file" 250 #define ATTR_credentiallifetime "credential_lifetime" 251 #define ATTR_jobmustreport "job_must_report" 252 #define ATTR_LockfileUpdateTime "lock_file_update_time" 253 #define ATTR_LockfileCheckTime "lock_file_check_time" 254 #define ATTR_npdefault "np_default" 255 #define ATTR_jobstarttimeout "job_start_timeout" 215 256 216 257 /* additional node "attributes" names */ 217 258 218 #define ATTR_NODE_state 219 #define ATTR_NODE_np 220 #define ATTR_NODE_properties 259 #define ATTR_NODE_state "state" 260 #define ATTR_NODE_np "np" 261 #define ATTR_NODE_properties "properties" 221 262 #define ATTR_NODE_ntype "ntype" 222 263 #define ATTR_NODE_jobs "jobs" … … 224 265 #define ATTR_NODE_note "note" 225 266 267 /* notification email formating */ 268 #define ATTR_mailsubjectfmt "mail_subject_fmt" 269 #define ATTR_mailbodyfmt "mail_body_fmt" 270 271 226 272 /* various attribute values */ 227 273 228 274 #define CHECKPOINT_UNSPECIFIED "u" 229 275 #define NO_HOLD "n" 230 #define NO_JOIN 276 #define NO_JOIN "n" 231 277 #define NO_KEEP "n" 232 278 #define MAIL_AT_ABORT "a" 233 279 234 280 235 #define DELDELAY "deldelay=" 281 #define DELDELAY "deldelay=" /* see qdel.c */ 236 282 #define DELPURGE "delpurge=" /* see qdel.c */ 283 #define PURGECOMP "purgecomplete=" /* see req_delete.c */ 237 284 #define EXECQUEONLY "exec_queue_only" /* see req_stat.c */ 285 #define RERUNFORCE "force" 238 286 239 287 #define USER_HOLD "u" … … 243 291 /* node-attribute values (state,ntype) */ 244 292 245 #define ND_free"free"246 #define ND_offline 247 #define ND_down 248 #define ND_reserve 249 #define ND_job_exclusive 250 #define ND_job_sharing 251 #define ND_busy 252 #define ND_state_unknown 253 #define ND_timeshared 254 #define ND_cluster 293 #define ND_free "free" 294 #define ND_offline "offline" 295 #define ND_down "down" 296 #define ND_reserve "reserve" 297 #define ND_job_exclusive "job-exclusive" 298 #define ND_job_sharing "job-sharing" 299 #define ND_busy "busy" 300 #define ND_state_unknown "state-unknown" 301 #define ND_timeshared "time-shared" 302 #define ND_cluster "cluster" 255 303 256 304 /* queue disallowed types */ … … 259 307 #define Q_DT_rerunable "rerunable" 260 308 #define Q_DT_nonrerunable "nonrerunable" 309 #define Q_DT_fault_tolerant "fault_tolerant" 310 #define Q_DT_fault_intolerant "fault_intolerant" 311 #define Q_DT_job_array "job_array" 261 312 262 313 /*constant related to sum of string lengths for above strings*/ 263 #define MAX_ENCODE_BFR100264 265 #define MGR_CMD_CREATE 266 #define MGR_CMD_DELETE 267 #define MGR_CMD_SET 268 #define MGR_CMD_UNSET 269 #define MGR_CMD_LIST 270 #define MGR_CMD_PRINT 271 #define MGR_CMD_ACTIVE 272 273 #define MGR_OBJ_NONE 314 #define MAX_ENCODE_BFR 100 315 316 #define MGR_CMD_CREATE 0 317 #define MGR_CMD_DELETE 1 318 #define MGR_CMD_SET 2 319 #define MGR_CMD_UNSET 3 320 #define MGR_CMD_LIST 4 321 #define MGR_CMD_PRINT 5 322 #define MGR_CMD_ACTIVE 6 323 324 #define MGR_OBJ_NONE -1 274 325 #define MGR_OBJ_SERVER 0 275 326 #define MGR_OBJ_QUEUE 1 276 #define MGR_OBJ_JOB 277 #define MGR_OBJ_NODE 327 #define MGR_OBJ_JOB 2 328 #define MGR_OBJ_NODE 3 278 329 279 330 /* Misc defines for various requests */ … … 282 333 #define MSG_ERR 2 283 334 284 #define SHUT_SIG -1 285 #define SHUT_IMMEDIATE 0 286 #define SHUT_DELAY 1 287 #define SHUT_QUICK 2 288 289 #define SIG_RESUME "resume" 290 #define SIG_SUSPEND "suspend" 291 292 #define PBS_MAXHOSTNAME 64 /* max host name length */ 335 #define SHUT_SIG -1 336 #define SHUT_IMMEDIATE 0 337 #define SHUT_DELAY 1 338 #define SHUT_QUICK 2 339 340 #define SIG_RESUME "resume" 341 #define SIG_SUSPEND "suspend" 342 343 344 /* WARNING: be careful changing these PBS_MAX* values. They can result in a 345 change in the structure of the .JB file, and binary incompatibilities between 346 versions of TORQUE. Do not change in a -fixes branch */ 347 348 349 350 #define PBS_MAXHOSTNAME 1024 /* max host name length */ 293 351 #ifndef MAXPATHLEN 294 #define MAXPATHLEN 1024/* max path name length */352 #define MAXPATHLEN 1024 /* max path name length */ 295 353 #endif 296 354 #ifndef MAXNAMLEN 297 #define MAXNAMLEN 355 #define MAXNAMLEN 255 298 356 #endif 299 #define MAX_NOTE 256 /* max node note length */ 300 #define MAX_NOTE_STR "256" /* max node note length as a string literal (this MUST match MAX_NOTE) */ 301 302 #define PBS_MAXUSER 16 /* max user name length */ 303 #define PBS_MAXGRPN 16 /* max group name length */ 304 #define PBS_MAXQUEUENAME 15 /* max queue name length */ 305 #define PBS_MAXSERVERNAME PBS_MAXHOSTNAME /* max server name length */ 306 #define PBS_MAXSEQNUM 6 /* max sequence number length */ 307 #define PBS_MAXPORTNUM 5 /* udp/tcp port numbers max=16 bits */ 308 #define PBS_MAXSVRJOBID (PBS_MAXSEQNUM + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* server job id size */ 309 #define PBS_MAXCLTJOBID (PBS_MAXSVRJOBID + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* client job id size */ 310 #define PBS_MAXDEST 1024 /* destination size -- increased from 256*/ 311 #define PBS_MAXROUTEDEST (PBS_MAXQUEUENAME + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* destination size */ 312 #define PBS_USE_IFF 1 /* pbs_connect() to call pbs_iff */ 313 #define PBS_INTERACTIVE 1 /* Support of Interactive jobs */ 314 #define PBS_TERM_BUF_SZ 80 /* Interactive term buffer size */ 315 #define PBS_TERM_CCA 6 /* Interactive term cntl char array */ 316 317 318 /* someday the PBS_*_PORT definition will go away and only the */ 319 /* PBS_*_SERVICE_NAME form will be used, maybe */ 320 321 #define PBS_BATCH_SERVICE_NAME "pbs" 322 #define PBS_BATCH_SERVICE_PORT 15001 323 #define PBS_BATCH_SERVICE_NAME_DIS "pbs_dis" /* new DIS port */ 324 #define PBS_BATCH_SERVICE_PORT_DIS 15001 /* new DIS port */ 325 #define PBS_MOM_SERVICE_NAME "pbs_mom" 326 #define PBS_MOM_SERVICE_PORT 15002 327 #define PBS_MANAGER_SERVICE_NAME "pbs_resmon" 328 #define PBS_MANAGER_SERVICE_PORT 15003 329 #define PBS_SCHEDULER_SERVICE_NAME "pbs_sched" 330 #define PBS_SCHEDULER_SERVICE_PORT 15004 331 332 enum batch_op { SET, UNSET, INCR, DECR, EQ, NE, GE, GT, LE, LT, DFLT }; 357 #define MAX_NOTE 256 /* max node note length */ 358 #define MAX_NOTE_STR "256" /* max node note length as a string literal (this MUST match MAX_NOTE) */ 359 360 #define PBS_MAXUSER 32 /* max user name length */ 361 #define PBS_MAXGRPN 16 /* max group name length */ 362 #define PBS_MAXQUEUENAME 15 /* max queue name length */ 363 #define PBS_MAXSERVERNAME PBS_MAXHOSTNAME /* max server name length */ 364 #define PBS_MAXJOBARRAYLEN 6 /* number of characters allowed in jobarray portion of job id, including '-' */ 365 #define PBS_MAXSEQNUM 8 /* max sequence number length */ 366 #define PBS_MAXPORTNUM 5 /* udp/tcp port numbers max=16 bits */ 367 #define PBS_MAXJOBARRAY 99999 368 #define PBS_MAXSVRJOBID (PBS_MAXSEQNUM + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + PBS_MAXJOBARRAYLEN + 2 ) /* server job id size */ 369 #define PBS_MAXCLTJOBID (PBS_MAXSVRJOBID + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + PBS_MAXJOBARRAYLEN + 2) /* client job id size */ 370 #define PBS_MAXDEST 1024 /* destination size -- increased from 256 */ 371 #define PBS_MAXROUTEDEST (PBS_MAXQUEUENAME + PBS_MAXSERVERNAME + PBS_MAXPORTNUM + 2) /* destination size */ 372 #define PBS_USE_IFF 1 /* pbs_connect() to call pbs_iff */ 373 #define PBS_INTERACTIVE 1 /* Support of Interactive jobs */ 374 #define PBS_TERM_BUF_SZ 80 /* Interactive term buffer size */ 375 #define PBS_TERM_CCA 6 /* Interactive term cntl char array */ 376 377 /* constants used to indicate version of job ji_qs struct written to disk. 378 starting with 2.4.0 we stopped encoding the torque version number into the 379 hex value e.g. 0x00020300 for torque v2.3.0. Now we just increment a value 380 which is added to the last version encoded that way */ 381 #define PBS_QS_VERSION_BASE 0x00020300 /* magic number do not change */ 382 #define PBS_QS_VERSION_INT 1 /* increment this version number with every change to the ji_qs struct */ 383 #define PBS_QS_VERSION (PBS_QS_VERSION_BASE + PBS_QS_VERSION_INT) /* version number saved in the ji_qs struct */ 384 385 /* someday the PBS_*_PORT definition will go away and only the */ 386 /* PBS_*_SERVICE_NAME form will be used, maybe */ 387 388 #define PBS_BATCH_SERVICE_NAME "pbs" 389 390 #ifndef PBS_BATCH_SERVICE_PORT 391 #define PBS_BATCH_SERVICE_PORT 15001 392 #endif /* PBS_BATCH_SERVICE_PORT */ 393 394 #define PBS_BATCH_SERVICE_NAME_DIS "pbs_dis" /* new DIS port */ 395 396 #ifndef PBS_BATCH_SERVICE_PORT_DIS 397 #define PBS_BATCH_SERVICE_PORT_DIS 15001 /* new DIS port */ 398 #endif /* PBS_BATCH_SERVICE_PORT_DIS */ 399 400 #define PBS_MOM_SERVICE_NAME "pbs_mom" 401 402 #ifndef PBS_MOM_SERVICE_PORT 403 #define PBS_MOM_SERVICE_PORT 15002 404 #endif /* PBS_MOM_SERVICE_PORT */ 405 406 #define PBS_MANAGER_SERVICE_NAME "pbs_resmon" 407 408 #ifndef PBS_MANAGER_SERVICE_PORT 409 #define PBS_MANAGER_SERVICE_PORT 15003 410 #endif /* PBS_MANAGER_SERVICE_PORT */ 411 412 #define PBS_SCHEDULER_SERVICE_NAME "pbs_sched" 413 414 #ifndef PBS_SCHEDULER_SERVICE_PORT 415 #define PBS_SCHEDULER_SERVICE_PORT 15004 416 #endif /* PBS_SCHEDULER_SERVICE_PORT */ 417 418 /* 419 * Other misc checkpoint defines 420 */ 421 #define CHECKPOINTHOLD "checkpoint_hold" 422 #define CHECKPOINTCONT "checkpoint_cont" 423 #define MOM_DEFAULT_CHECKPOINT_DIR "$MOMDEFAULTCHECKPOINTDIR$" 424 425 426 enum batch_op { SET, UNSET, INCR, DECR, EQ, NE, GE, GT, LE, LT, DFLT, MERGE }; 333 427 334 428 /* … … 336 430 ** interchangably. The op field is not used. 337 431 */ 338 struct attrl { 339 struct attrl *next; 340 char *name; 341 char *resource; 342 char *value; 343 enum batch_op op; /* not used */ 344 }; 345 346 struct attropl { 347 struct attropl *next; 348 char *name; 349 char *resource; 350 char *value; 351 enum batch_op op; 352 }; 353 354 struct batch_status { 355 struct batch_status *next; 356 char *name; 357 struct attrl *attribs; 358 char *text; 359 }; 432 433 struct attrl 434 { 435 struct attrl *next; 436 char *name; 437 char *resource; 438 char *value; 439 enum batch_op op; /* not used */ 440 }; 441 442 struct attropl 443 { 444 struct attropl *next; 445 char *name; 446 char *resource; 447 char *value; 448 enum batch_op op; 449 }; 450 451 struct batch_status 452 { 453 struct batch_status *next; 454 char *name; 455 struct attrl *attribs; 456 char *text; 457 }; 458 459 460 360 461 361 462 /* Resource Reservation Information */ 362 typedef int resource_t; /* resource reservation handle */ 363 364 #define RESOURCE_T_NULL (resource_t)0 365 #define RESOURCE_T_ALL (resource_t)-1 366 367 extern int 368 pbs_errno; /* error number */ 369 370 extern char * 371 pbs_server; /* server attempted to connect | connected to */ 372 /* see pbs_connect(3B) */ 373 374 extern char * avail(int connect, char *resc); 375 463 typedef int resource_t; /* resource reservation handle */ 464 465 #define RESOURCE_T_NULL (resource_t)0 466 #define RESOURCE_T_ALL (resource_t)-1 467 468 extern int pbs_errno; /* error number */ 469 470 extern char *pbs_server; /* server attempted to connect | connected to */ 471 /* see pbs_connect(3B) */ 472 473 extern char *avail(int connect, char *resc); 376 474 extern int pbs_asyrunjob(int c, char *jobid, char *location, char *extend); 377 378 extern int pbs_alterjob(int connect, char *job_id, struct attrl *attrib, 379 char *extend); 380 475 extern int pbs_alterjob(int connect, char *job_id, struct attrl *ATTRL, char *extend); 381 476 extern int pbs_connect(char *server); 382 383 477 extern int pbs_query_max_connections(void); 384 385 extern char * pbs_default(void); 478 extern char *pbs_default(void); 386 479 387 480 extern int pbs_deljob(int connect, char *job_id, char *extend); 388 389 481 extern int pbs_disconnect(int connect); 390 391 extern char * pbs_geterrmsg(int connect); 392 393 extern int pbs_holdjob(int connect, char *job_id, char *hold_type, 394 char *extend); 395 396 extern char * pbs_locjob(int connect, char *job_id, char *extend); 482 extern char *pbs_geterrmsg(int connect); 483 extern int pbs_holdjob(int connect, char *job_id, char *hold_type, char *extend); 484 extern char *pbs_locjob(int connect, char *job_id, char *extend); 397 485 398 486 extern int pbs_manager(int connect, int command, int obj_type, char *obj_name, 399 struct attropl * attrib, char *extend);487 struct attropl *ATTROPL, char *extend); 400 488 401 extern int pbs_movejob(int connect, char *job_id, char *destination, 402 char *extend); 489 extern int pbs_movejob(int connect, char *job_id, char *destination, char *extend); 403 490 404 extern int pbs_msgjob(int connect, char *job_id, int file, char *message, 405 char *extend); 491 extern int pbs_msgjob(int connect, char *job_id, int file, char *message, char *extend); 406 492 407 493 extern int pbs_orderjob (int connect, char *job1, char *job2, char *extend); 408 494 409 extern int pbs_rescquery(int connect, char ** rlist, int nresc, int *avail,495 extern int pbs_rescquery(int connect, char **CHAR, int nresc, int *avail, 410 496 int *alloc, int *resv, int *down); 411 497 412 extern int pbs_rescreserve(int connect, char ** rlist, int nresc, resource_t *phandle);498 extern int pbs_rescreserve(int connect, char **CHAR, int nresc, resource_t *phandle); 413 499 414 500 extern int pbs_rescrelease(int connect, resource_t rhandle); … … 420 506 extern int pbs_runjob(int connect, char *jobid, char *loc, char *extend); 421 507 422 extern char **pbs_selectjob(int connect, struct attropl * select_list, char *extend);508 extern char **pbs_selectjob(int connect, struct attropl *ATTROPL, char *extend); 423 509 424 510 extern int pbs_sigjob(int connect, char *job_id, char *signal, char *extend); 425 511 426 extern void pbs_statfree(struct batch_status *stat); 512 513 extern void pbs_statfree(struct batch_status *BATCH_STATUS); 427 514 428 515 // Function does not exitst Bas van der Vlies … … 430 517 // extern struct batch_status *pbs_statdest(int connect, char *id, char *extend); 431 518 432 extern struct batch_status *pbs_statjob(int connect, char *id, struct attrl * attrib, char *extend);433 434 extern struct batch_status *pbs_selstat(int connect, struct attropl * select_list, char *extend);435 436 extern struct batch_status *pbs_statque(int connect, char *id, struct attrl * attrib, char *extend);437 438 extern struct batch_status *pbs_statserver(int connect, struct attrl * attrib, char *extend);439 440 extern struct batch_status *pbs_statnode(int connect, char *id, struct attrl * attrib, char *extend);441 442 extern char *pbs_submit(int connect, struct attropl * attrib, char *script,519 extern struct batch_status *pbs_statjob(int connect, char *id, struct attrl *ATTRL, char *extend); 520 521 extern struct batch_status *pbs_selstat(int connect, struct attropl *ATTROPL, char *extend); 522 523 extern struct batch_status *pbs_statque(int connect, char *id, struct attrl *ATTRL, char *extend); 524 525 extern struct batch_status *pbs_statserver(int connect, struct attrl *ATTRL, char *extend); 526 527 extern struct batch_status *pbs_statnode(int connect, char *id, struct attrl *ATTRL, char *extend); 528 529 extern char *pbs_submit(int connect, struct attropl *ATTROPL, char *script, 443 530 char *destination, char *extend); 444 531 … … 449 536 extern int usepool(int connect, int update); 450 537 538 #ifdef TORQUE_2_4 539 extern char *pbs_fbserver(void); 540 extern char *pbs_get_server_list(void); 541 extern int pbs_sigjobasync(int connect, char *job_id, char *signal, char *extend); 542 extern int pbs_alterjob_async(int connect, char *job_id, struct attrl *ATTRL, char *extend); 543 extern int pbs_checkpointjob(int connect, char *job_id, char *extend); 544 #endif 545 451 546 #endif /* _PBS_IFL_DEF */ 452 547 -
trunk/src/rm.h
r37 r213 1 1 /* 2 * $Id: rm.h,v 1.1 2002/02/27 14:34:51 sscpbas Exp $ 3 * 4 * Portable Batch System (PBS) Software License 5 * 6 * Copyright (c) 1999, MRJ Technology Solutions. 2 * OpenPBS (Portable Batch System) v2.3 Software License 3 * 4 * Copyright (c) 1999-2000 Veridian Information Solutions, Inc. 7 5 * All rights reserved. 8 * 9 * Acknowledgment: The Portable Batch System Software was originally developed 10 * as a joint project between the Numerical Aerospace Simulation (NAS) Systems 11 * Division of NASA Ames Research Center and the National Energy Research 12 * Supercomputer Center (NERSC) of Lawrence Livermore National Laboratory. 13 * 14 * Redistribution of the Portable Batch System Software and use in source 15 * and binary forms, with or without modification, are permitted provided 16 * that the following conditions are met: 17 * 18 * - Redistributions of source code must retain the above copyright and 19 * acknowledgment notices, this list of conditions and the following 20 * disclaimer. 21 * 22 * - Redistributions in binary form must reproduce the above copyright and 23 * acknowledgment notices, this list of conditions and the following 24 * disclaimer in the documentation and/or other materials provided with the 25 * distribution. 26 * 27 * - All advertising materials mentioning features or use of this software must 28 * display the following acknowledgment: 29 * 30 * This product includes software developed by NASA Ames Research Center, 31 * Lawrence Livermore National Laboratory, and MRJ Technology Solutions. 32 * 33 * DISCLAIMER OF WARRANTY 34 * 35 * THIS SOFTWARE IS PROVIDED BY MRJ TECHNOLOGY SOLUTIONS ("MRJ") "AS IS" WITHOUT 36 * WARRANTY OF ANY KIND, AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 37 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS 38 * FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED. 39 * 40 * IN NO EVENT, UNLESS REQUIRED BY APPLICABLE LAW, SHALL MRJ, NASA, NOR 41 * THE U.S. GOVERNMENT BE LIABLE FOR ANY DIRECT DAMAGES WHATSOEVER, 42 * NOR ANY INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 43 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 44 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 45 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 46 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 47 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 48 * 6 * 7 * --------------------------------------------------------------------------- 8 * For a license to use or redistribute the OpenPBS software under conditions 9 * other than those described below, or to purchase support for this software, 10 * please contact Veridian Systems, PBS Products Department ("Licensor") at: 11 * 12 * www.OpenPBS.org +1 650 967-4675 sales@OpenPBS.org 13 * 877 902-4PBS (US toll-free) 14 * --------------------------------------------------------------------------- 15 * 16 * This license covers use of the OpenPBS v2.3 software (the "Software") at 17 * your site or location, and, for certain users, redistribution of the 18 * Software to other sites and locations. Use and redistribution of 19 * OpenPBS v2.3 in source and binary forms, with or without modification, 20 * are permitted provided that all of the following conditions are met. 21 * After December 31, 2001, only conditions 3-6 must be met: 22 * 23 * 1. Commercial and/or non-commercial use of the Software is permitted 24 * provided a current software registration is on file at www.OpenPBS.org. 25 * If use of this software contributes to a publication, product, or 26 * service, proper attribution must be given; see www.OpenPBS.org/credit.html 27 * 28 * 2. Redistribution in any form is only permitted for non-commercial, 29 * non-profit purposes. There can be no charge for the Software or any 30 * software incorporating the Software. Further, there can be no 31 * expectation of revenue generated as a consequence of redistributing 32 * the Software. 33 * 34 * 3. Any Redistribution of source code must retain the above copyright notice 35 * and the acknowledgment contained in paragraph 6, this list of conditions 36 * and the disclaimer contained in paragraph 7. 37 * 38 * 4. Any Redistribution in binary form must reproduce the above copyright 39 * notice and the acknowledgment contained in paragraph 6, this list of 40 * conditions and the disclaimer contained in paragraph 7 in the 41 * documentation and/or other materials provided with the distribution. 42 * 43 * 5. Redistributions in any form must be accompanied by information on how to 44 * obtain complete source code for the OpenPBS software and any 45 * modifications and/or additions to the OpenPBS software. The source code 46 * must either be included in the distribution or be available for no more 47 * than the cost of distribution plus a nominal fee, and all modifications 48 * and additions to the Software must be freely redistributable by any party 49 * (including Licensor) without restriction. 50 * 51 * 6. All advertising materials mentioning features or use of the Software must 52 * display the following acknowledgment: 53 * 54 * "This product includes software developed by NASA Ames Research Center, 55 * Lawrence Livermore National Laboratory, and Veridian Information 56 * Solutions, Inc. 57 * Visit www.OpenPBS.org for OpenPBS software support, 58 * products, and information." 59 * 60 * 7. DISCLAIMER OF WARRANTY 61 * 62 * THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. ANY EXPRESS 63 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 64 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT 65 * ARE EXPRESSLY DISCLAIMED. 66 * 67 * IN NO EVENT SHALL VERIDIAN CORPORATION, ITS AFFILIATED COMPANIES, OR THE 68 * U.S. GOVERNMENT OR ANY OF ITS AGENCIES BE LIABLE FOR ANY DIRECT OR INDIRECT, 69 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 70 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 71 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 72 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 73 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 74 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 75 * 49 76 * This license will be governed by the laws of the Commonwealth of Virginia, 50 77 * without reference to its choice of law rules. … … 52 79 53 80 /* 54 * @(#) $Id: rm.h,v 1.1 2002/02/27 14:34:51 sscpbas Exp $ 55 */ 56 57 /* 58 ** Header file defineing the library calls for connecting 59 ** to the resource monitor. 81 ** Header file defineing the library calls for connecting 82 ** to the resource monitor. 60 83 */ 61 84 62 int openrm(char *, unsigned int); 63 int closerm(int); 64 int downrm(int); 65 int configrm(int, char *); 66 int addreq(int, char *); 67 int allreq(char *); 68 int flushreq(void); 69 int activereq(void); 70 void fullresp(int); 71 72 char* getreq(int); 85 int openrm(char *, unsigned int); 86 int closerm(int); 87 int downrm(int); 88 int configrm(int, char *); 89 int addreq(int, char *); 90 int allreq(char *); 91 char* getreq(int); 92 int flushreq(void); 93 int activereq(void); 94 void fullresp(int);
Note: See TracChangeset
for help on using the changeset viewer.