From 47a7a0b00d5073ec20dd2b0339392d79710651d4 Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Fri, 15 Nov 2002 01:09:44 +0000
Subject: [PATCH] Move data structure initialization and default values to
 api/slurm.h.

---
 src/api/Makefile.am              |  1 +
 src/api/init_msg.c               | 79 ++++++++++++++++++++++++++++++++
 src/api/slurm.h                  | 47 +++++++++++++++++--
 src/common/read_config.c         |  1 +
 src/common/slurm_protocol_defs.c | 54 ++--------------------
 src/common/slurm_protocol_defs.h | 32 +------------
 6 files changed, 127 insertions(+), 87 deletions(-)
 create mode 100644 src/api/init_msg.c

diff --git a/src/api/Makefile.am b/src/api/Makefile.am
index 62833b9658b..7a791c9dbf4 100644
--- a/src/api/Makefile.am
+++ b/src/api/Makefile.am
@@ -16,6 +16,7 @@ libslurm_la_SOURCES =    \
 	complete.c       \
 	config_info.c    \
 	free_msg.c       \
+	init_msg.c       \
 	job_info.c       \
 	job_step_info.c  \
 	node_info.c      \
diff --git a/src/api/init_msg.c b/src/api/init_msg.c
new file mode 100644
index 00000000000..0e05e38a835
--- /dev/null
+++ b/src/api/init_msg.c
@@ -0,0 +1,79 @@
+/*****************************************************************************\
+ *  init_msg.c - initialize RPC messages contents
+ *****************************************************************************
+ *  Copyright (C) 2002 The Regents of the University of California.
+ *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
+ *  Written by moe jette <jette1@llnl.gov>.
+ *  UCRL-CODE-2002-040.
+ *  
+ *  This file is part of SLURM, a resource management program.
+ *  For details, see <http://www.llnl.gov/linux/slurm/>.
+ *  
+ *  SLURM is free software; you can redistribute it and/or modify it under
+ *  the terms of the GNU General Public License as published by the Free
+ *  Software Foundation; either version 2 of the License, or (at your option)
+ *  any later version.
+ *  
+ *  SLURM is distributed in the hope that it will be useful, but WITHOUT ANY
+ *  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ *  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ *  details.
+ *  
+ *  You should have received a copy of the GNU General Public License along
+ *  with SLURM; if not, write to the Free Software Foundation, Inc.,
+ *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+\*****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <errno.h>
+#include <stdio.h>
+
+#include <src/api/slurm.h>
+#include <src/common/slurm_protocol_api.h>
+
+void slurm_init_job_desc_msg(job_desc_msg_t * job_desc_msg)
+{
+	job_desc_msg->contiguous =
+			(uint16_t) SLURM_JOB_DESC_DEFAULT_CONTIGUOUS;
+	job_desc_msg->kill_on_node_fail =
+			(uint16_t) SLURM_JOB_DESC_DEFAULT_KILL_NODE_FAIL;
+	job_desc_msg->environment = SLURM_JOB_DESC_DEFAULT_ENVIRONMENT;
+	job_desc_msg->env_size    = SLURM_JOB_DESC_DEFAULT_ENV_SIZE;
+	job_desc_msg->features    = SLURM_JOB_DESC_DEFAULT_FEATURES;
+	job_desc_msg->job_id      = SLURM_JOB_DESC_DEFAULT_JOB_ID;
+	job_desc_msg->name        = SLURM_JOB_DESC_DEFAULT_JOB_NAME;
+	job_desc_msg->min_procs   = SLURM_JOB_DESC_DEFAULT_MIN_PROCS;
+	job_desc_msg->min_memory  = SLURM_JOB_DESC_DEFAULT_MIN_MEMORY;
+	job_desc_msg->min_tmp_disk= SLURM_JOB_DESC_DEFAULT_MIN_TMP_DISK;
+	job_desc_msg->partition   = SLURM_JOB_DESC_DEFAULT_PARTITION;
+	job_desc_msg->priority    = SLURM_JOB_DESC_DEFAULT_PRIORITY;
+	job_desc_msg->req_nodes   = SLURM_JOB_DESC_DEFAULT_REQ_NODES;
+	job_desc_msg->script      = SLURM_JOB_DESC_DEFAULT_JOB_SCRIPT;
+	job_desc_msg->shared      = (uint16_t) SLURM_JOB_DESC_DEFAULT_SHARED;
+	job_desc_msg->time_limit  = SLURM_JOB_DESC_DEFAULT_TIME_LIMIT;
+	job_desc_msg->num_procs   = SLURM_JOB_DESC_DEFAULT_NUM_PROCS;
+	job_desc_msg->num_nodes   = SLURM_JOB_DESC_DEFAULT_NUM_NODES;
+	job_desc_msg->err         = NULL;
+	job_desc_msg->in          = NULL;
+	job_desc_msg->out         = NULL;
+	job_desc_msg->user_id     = SLURM_JOB_DESC_DEFAULT_USER_ID;
+	job_desc_msg->work_dir    = SLURM_JOB_DESC_DEFAULT_WORKING_DIR;
+}
+
+void slurm_init_part_desc_msg (update_part_msg_t * update_part_msg)
+{
+	update_part_msg->name 		= NULL;
+	update_part_msg->nodes 		= NULL;
+	update_part_msg->allow_groups 	= NULL;
+	update_part_msg->max_time 	= (uint32_t) NO_VAL;
+	update_part_msg->max_nodes 	= (uint32_t) NO_VAL;
+	update_part_msg->default_part 	= (uint16_t) NO_VAL;
+	update_part_msg->root_only 	= (uint16_t) NO_VAL;
+	update_part_msg->shared 	= (uint16_t) NO_VAL;
+	update_part_msg->state_up 	= (uint16_t) NO_VAL;
+}
+
+
diff --git a/src/api/slurm.h b/src/api/slurm.h
index 65c9adf620c..e360e9801f9 100644
--- a/src/api/slurm.h
+++ b/src/api/slurm.h
@@ -29,12 +29,46 @@
 #define _SLURM_H
 
 #include <stdio.h>			/* for FILE definitions */
+
 #include <src/common/slurm_protocol_defs.h>
 
+/*****************************************************************************\
+ *	DEFINITIONS FOR INPUT VALUES
+\*****************************************************************************/
+
+/* INFINITE is used to identify unlimited configurations,  */
+/* eg. the maximum count of nodes any job may use in some partition */
+#define	INFINITE (0xffffffff)
+#define NO_VAL	 (0xfffffffe)
+
+#define SLURM_JOB_DESC_DEFAULT_CONTIGUOUS	NO_VAL
+#define SLURM_JOB_DESC_DEFAULT_KILL_NODE_FAIL	NO_VAL
+#define SLURM_JOB_DESC_DEFAULT_ENVIRONMENT	((char **) NULL)
+#define SLURM_JOB_DESC_DEFAULT_ENV_SIZE 	0
+#define SLURM_JOB_DESC_DEFAULT_FEATURES		NULL
+#define SLURM_JOB_DESC_DEFAULT_JOB_ID		NO_VAL
+#define SLURM_JOB_DESC_DEFAULT_JOB_NAME 	NULL
+#define SLURM_JOB_DESC_DEFAULT_MIN_PROCS	NO_VAL
+#define SLURM_JOB_DESC_DEFAULT_MIN_MEMORY	NO_VAL
+#define SLURM_JOB_DESC_DEFAULT_MIN_TMP_DISK	NO_VAL
+#define SLURM_JOB_DESC_DEFAULT_PARTITION	NULL
+#define SLURM_JOB_DESC_DEFAULT_PRIORITY		NO_VAL
+#define SLURM_JOB_DESC_DEFAULT_REQ_NODES	NULL
+#define SLURM_JOB_DESC_DEFAULT_JOB_SCRIPT	NULL
+#define SLURM_JOB_DESC_DEFAULT_SHARED	 	NO_VAL
+#define SLURM_JOB_DESC_DEFAULT_TIME_LIMIT	NO_VAL
+#define SLURM_JOB_DESC_DEFAULT_NUM_PROCS	NO_VAL
+#define SLURM_JOB_DESC_DEFAULT_NUM_NODES	NO_VAL
+#define SLURM_JOB_DESC_DEFAULT_USER_ID		NO_VAL
+#define SLURM_JOB_DESC_DEFAULT_WORKING_DIR	NULL
+
 /*****************************************************************************\
  *	RESOURCE ALLOCATION FUNCTIONS
 \*****************************************************************************/
 
+/* slurm_init_job_desc_msg - set default job descriptor values */
+extern void slurm_init_job_desc_msg (job_desc_msg_t * job_desc_msg);
+
 /*
  * slurm_allocate_resources - allocate resources for a job request
  * NOTE: free the response using slurm_free_resource_allocation_response_msg
@@ -182,7 +216,7 @@ extern int slurm_load_jobs (time_t update_time,
 		job_info_msg_t **job_info_msg_pptr);
 
 /*
- * slurm_free_job_info - free the job information response message
+ * slurm_free_job_info_msg - free the job information response message
  * NOTE: buffer is loaded by slurm_load_job.
  */
 extern void slurm_free_job_info_msg (job_info_msg_t * job_buffer_ptr);
@@ -249,8 +283,8 @@ extern void slurm_print_job_step_info ( FILE*, job_step_info_t * step_ptr );
 \*****************************************************************************/
 
 /*
- * slurm_load_node - issue RPC to get slurm all node configuration information 
- *	if changed since update_time 
+ * slurm_load_node - issue RPC to get slurm all node configuration  
+ *	information if changed since update_time 
  * NOTE: free the response using slurm_free_node_info_msg
  */
 extern int slurm_load_node (time_t update_time, 
@@ -286,9 +320,12 @@ extern int slurm_update_node ( update_node_msg_t * node_msg ) ;
  *	SLURM PARTITION CONFIGURATION READ/PRINT/UPDATE FUNCTIONS
 \*****************************************************************************/
 
+/* slurm_init_part_desc_msg - set default partition configuration parameters */
+void slurm_init_part_desc_msg (update_part_msg_t * update_part_msg);
+
 /*
- * slurm_load_partitions - issue RPC to get slurm all partition configuration  
- *	information if changed since update_time 
+ * slurm_load_partitions - issue RPC to get slurm all partition   
+ *	configuration information if changed since update_time 
  * NOTE: free the response using slurm_free_partition_info_msg
  */
 extern int slurm_load_partitions (time_t update_time, 
diff --git a/src/common/read_config.c b/src/common/read_config.c
index af77b466966..8fbcd97050b 100644
--- a/src/common/read_config.c
+++ b/src/common/read_config.c
@@ -39,6 +39,7 @@
 #include <time.h>
 #include <unistd.h>
 
+#include <src/api/slurm.h>
 #include <src/common/hostlist.h>
 #include <src/common/log.h>
 #include <src/common/macros.h>
diff --git a/src/common/slurm_protocol_defs.c b/src/common/slurm_protocol_defs.c
index 8f39b78e95e..85407944634 100644
--- a/src/common/slurm_protocol_defs.c
+++ b/src/common/slurm_protocol_defs.c
@@ -1,6 +1,7 @@
 /*****************************************************************************\
  *  slurm_protocol_defs.c - functions for initializing and releasing 
- *	storage for RPC data structures
+ *	storage for RPC data structures. these are the functions used by 
+ *	the slurm daemons directly, not for user client use.
  *****************************************************************************
  *  Copyright (C) 2002 The Regents of the University of California.
  *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
@@ -39,7 +40,7 @@
 #include <src/common/slurm_protocol_defs.h>
 #include <src/common/xmalloc.h>
 
-/* short messages*/
+
 void slurm_free_last_update_msg(last_update_msg_t * msg)
 {
 	xfree(msg);
@@ -282,55 +283,6 @@ void slurm_free_kill_tasks_msg(kill_tasks_msg_t * msg)
 	}
 }
 
-/**********************
- Init functions
- **********************/
-
-
-void slurm_init_job_desc_msg(job_desc_msg_t * job_desc_msg)
-{
-	job_desc_msg->contiguous =
-	    (uint16_t) SLURM_JOB_DESC_DEFAULT_CONTIGUOUS;
-	job_desc_msg->kill_on_node_fail =
-	    (uint16_t) SLURM_JOB_DESC_DEFAULT_KILL_NODE_FAIL;
-	job_desc_msg->environment = SLURM_JOB_DESC_DEFAULT_ENVIRONMENT;
-	job_desc_msg->env_size    = SLURM_JOB_DESC_DEFAULT_ENV_SIZE;
-	job_desc_msg->features    = SLURM_JOB_DESC_DEFAULT_FEATURES;
-
-	job_desc_msg->job_id      = SLURM_JOB_DESC_DEFAULT_JOB_ID;
-
-	job_desc_msg->name        = SLURM_JOB_DESC_DEFAULT_JOB_NAME;
-	job_desc_msg->min_procs   = SLURM_JOB_DESC_DEFAULT_MIN_PROCS;
-	job_desc_msg->min_memory  = SLURM_JOB_DESC_DEFAULT_MIN_MEMORY;
-	job_desc_msg->min_tmp_disk= SLURM_JOB_DESC_DEFAULT_MIN_TMP_DISK;
-	job_desc_msg->partition   = SLURM_JOB_DESC_DEFAULT_PARTITION;
-	job_desc_msg->priority    = SLURM_JOB_DESC_DEFAULT_PRIORITY;
-	job_desc_msg->req_nodes   = SLURM_JOB_DESC_DEFAULT_REQ_NODES;
-	job_desc_msg->script      = SLURM_JOB_DESC_DEFAULT_JOB_SCRIPT;
-	job_desc_msg->shared      = (uint16_t) SLURM_JOB_DESC_DEFAULT_SHARED;
-	job_desc_msg->time_limit  = SLURM_JOB_DESC_DEFAULT_TIME_LIMIT;
-	job_desc_msg->num_procs   = SLURM_JOB_DESC_DEFAULT_NUM_PROCS;
-	job_desc_msg->num_nodes   = SLURM_JOB_DESC_DEFAULT_NUM_NODES;
-	job_desc_msg->err         = NULL;
-	job_desc_msg->in          = NULL;
-	job_desc_msg->out         = NULL;
-	job_desc_msg->user_id     = SLURM_JOB_DESC_DEFAULT_USER_ID;
-	job_desc_msg->work_dir    = SLURM_JOB_DESC_DEFAULT_WORKING_DIR;
-}
-
-void slurm_init_part_desc_msg(update_part_msg_t * update_part_msg)
-{
-	update_part_msg->name 		= NULL;
-	update_part_msg->nodes 		= NULL;
-	update_part_msg->allow_groups 	= NULL;
-	update_part_msg->max_time 	= (uint32_t) NO_VAL;
-	update_part_msg->max_nodes 	= (uint32_t) NO_VAL;
-	update_part_msg->default_part 	= (uint16_t) NO_VAL;
-	update_part_msg->root_only 	= (uint16_t) NO_VAL;
-	update_part_msg->shared 	= (uint16_t) NO_VAL;
-	update_part_msg->state_up 	= (uint16_t) NO_VAL;
-}
-
 char *job_state_string(enum job_states inx)
 {
 	static char *job_state_string[] = {
diff --git a/src/common/slurm_protocol_defs.h b/src/common/slurm_protocol_defs.h
index 51ab9676535..a285b244087 100644
--- a/src/common/slurm_protocol_defs.h
+++ b/src/common/slurm_protocol_defs.h
@@ -68,12 +68,6 @@ enum task_flag_vals {
 	TASK_UNUSED2 = 0x4
 };
 
-
-/* INFINITE is used to identify unlimited configurations,  */
-/* eg. the maximum count of nodes any job may use in some partition */
-#define	INFINITE (0xffffffff)
-#define NO_VAL	 (0xfffffffe)
-
 /* last entry must be STATE_END, keep in sync with node_state_string    		*/
 /* if a node ceases to respond, its last state is ORed with NODE_STATE_NO_RESPOND	*/
 enum node_states {
@@ -620,8 +614,7 @@ void inline slurm_free_task_exit_msg(task_exit_msg_t * msg);
 void inline slurm_free_kill_tasks_msg(kill_tasks_msg_t * msg);
 void inline
 slurm_free_reattach_tasks_streams_msg(reattach_tasks_streams_msg_t * msg);
-void inline slurm_free_revoke_credential_msg(revoke_credential_msg_t *
-					     msg);
+void inline slurm_free_revoke_credential_msg(revoke_credential_msg_t * msg);
 
 extern char *job_dist_string(uint16_t inx);
 extern char *job_state_string(enum job_states inx);
@@ -629,27 +622,4 @@ extern char *job_state_string_compact(enum job_states inx);
 extern char *node_state_string(enum node_states inx);
 extern char *node_state_string_compact(enum node_states inx);
 
-#define SLURM_JOB_DESC_DEFAULT_CONTIGUOUS	NO_VAL
-#define SLURM_JOB_DESC_DEFAULT_KILL_NODE_FAIL	NO_VAL
-#define SLURM_JOB_DESC_DEFAULT_ENVIRONMENT	((char **) NULL)
-#define SLURM_JOB_DESC_DEFAULT_ENV_SIZE 	0
-#define SLURM_JOB_DESC_DEFAULT_FEATURES		NULL
-#define SLURM_JOB_DESC_DEFAULT_JOB_ID		NO_VAL
-#define SLURM_JOB_DESC_DEFAULT_JOB_NAME 	NULL
-#define SLURM_JOB_DESC_DEFAULT_MIN_PROCS	NO_VAL
-#define SLURM_JOB_DESC_DEFAULT_MIN_MEMORY	NO_VAL
-#define SLURM_JOB_DESC_DEFAULT_MIN_TMP_DISK	NO_VAL
-#define SLURM_JOB_DESC_DEFAULT_PARTITION	NULL
-#define SLURM_JOB_DESC_DEFAULT_PRIORITY		NO_VAL
-#define SLURM_JOB_DESC_DEFAULT_REQ_NODES	NULL
-#define SLURM_JOB_DESC_DEFAULT_JOB_SCRIPT	NULL
-#define SLURM_JOB_DESC_DEFAULT_SHARED	 	NO_VAL
-#define SLURM_JOB_DESC_DEFAULT_TIME_LIMIT	NO_VAL
-#define SLURM_JOB_DESC_DEFAULT_NUM_PROCS	NO_VAL
-#define SLURM_JOB_DESC_DEFAULT_NUM_NODES	NO_VAL
-#define SLURM_JOB_DESC_DEFAULT_USER_ID		NO_VAL
-#define SLURM_JOB_DESC_DEFAULT_WORKING_DIR	NULL
-void slurm_init_job_desc_msg(job_desc_msg_t * job_desc_msg);
-void slurm_init_part_desc_msg(update_part_msg_t * update_part_msg);
-
 #endif
-- 
GitLab