Skip to content
Snippets Groups Projects
Commit c862639c authored by Moe Jette's avatar Moe Jette
Browse files

Move all slurm message free calls into slurm_protocol_defs. Remove

src/api/free_msg.c.
parent a7930665
No related branches found
No related tags found
No related merge requests found
......@@ -31,7 +31,6 @@ libslurm_la_SOURCES = \
cancel.c \
complete.c \
config_info.c \
free_msg.c \
init_msg.c \
job_info.c \
job_step_info.c \
......
/*****************************************************************************\
* free_msg.c - free RPC response messages including all allocated memory
*****************************************************************************
* 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 <slurm/slurm.h>
#include "src/common/slurm_cred.h"
#include "src/common/slurm_protocol_api.h"
#include "src/common/xmalloc.h"
static void _free_all_job_info (job_info_msg_t *msg);
static void _slurm_free_job_info_members (job_info_t * job);
static void _free_all_node_info (node_info_msg_t *msg);
static void _slurm_free_node_info_members (node_info_t * node);
static void _free_all_partitions (partition_info_msg_t *msg);
static void _slurm_free_partition_info_members (partition_info_t * part);
static void _free_all_step_info (job_step_info_response_msg_t *msg);
static void _slurm_free_job_step_info_members (job_step_info_t * msg);
/*
* slurm_free_resource_allocation_response_msg - free slurm resource
* allocation response message
* IN msg - pointer to allocation response message
* NOTE: buffer is loaded by slurm_allocate_resources
*/
void slurm_free_resource_allocation_response_msg (
resource_allocation_response_msg_t * msg)
{
if (msg) {
xfree(msg->node_list);
xfree(msg->cpus_per_node);
xfree(msg->cpu_count_reps);
xfree(msg->node_addr);
xfree(msg);
}
}
/*
* slurm_free_resource_allocation_and_run_response_msg - free slurm
* resource allocation and run job step response message
* IN msg - pointer to allocation and run job step response message
* NOTE: buffer is loaded by slurm_allocate_resources_and_run
*/
void slurm_free_resource_allocation_and_run_response_msg (
resource_allocation_and_run_response_msg_t * msg)
{
if (msg) {
xfree(msg->node_list);
xfree(msg->cpus_per_node);
xfree(msg->cpu_count_reps);
xfree(msg->node_addr);
slurm_cred_destroy(msg->cred);
# ifdef HAVE_LIBELAN3
if (msg->qsw_job)
qsw_free_jobinfo(msg->qsw_job);
# endif
xfree(msg);
}
}
/*
* slurm_free_job_step_create_response_msg - free slurm
* job step create response message
* IN msg - pointer to job step create response message
* NOTE: buffer is loaded by slurm_job_step_create
*/
void slurm_free_job_step_create_response_msg(
job_step_create_response_msg_t * msg)
{
if (msg) {
slurm_cred_destroy(msg->cred);
# ifdef HAVE_LIBELAN3
if (msg->qsw_job)
qsw_free_jobinfo(msg->qsw_job);
# endif
xfree(msg);
}
}
/*
* slurm_free_submit_response_response_msg - free slurm
* job submit response message
* IN msg - pointer to job submit response message
* NOTE: buffer is loaded by slurm_submit_batch_job
*/
void slurm_free_submit_response_response_msg(submit_response_msg_t * msg)
{
if (msg)
xfree(msg);
}
/*
* slurm_free_ctl_conf - free slurm control information response message
* IN msg - pointer to slurm control information response message
* NOTE: buffer is loaded by slurm_load_jobs
*/
void slurm_free_ctl_conf(slurm_ctl_conf_info_msg_t * config_ptr)
{
if (config_ptr) {
xfree(config_ptr->authtype);
xfree(config_ptr->backup_addr);
xfree(config_ptr->backup_controller);
xfree(config_ptr->control_addr);
xfree(config_ptr->control_machine);
xfree(config_ptr->epilog);
xfree(config_ptr->job_comp_loc);
xfree(config_ptr->job_comp_type);
xfree(config_ptr->job_credential_private_key);
xfree(config_ptr->job_credential_public_certificate);
xfree(config_ptr->plugindir);
xfree(config_ptr->prolog);
xfree(config_ptr->slurm_user_name);
xfree(config_ptr->slurmctld_pidfile);
xfree(config_ptr->slurmctld_logfile);
xfree(config_ptr->slurmd_logfile);
xfree(config_ptr->slurmd_pidfile);
xfree(config_ptr->slurmd_spooldir);
xfree(config_ptr->slurm_conf);
xfree(config_ptr->state_save_location);
xfree(config_ptr->tmp_fs);
xfree(config_ptr);
}
}
/*
* slurm_free_job_info - free the job information response message
* IN msg - pointer to job information response message
* NOTE: buffer is loaded by slurm_load_job.
*/
void slurm_free_job_info_msg(job_info_msg_t * job_buffer_ptr)
{
if (job_buffer_ptr) {
if (job_buffer_ptr->job_array) {
_free_all_job_info(job_buffer_ptr);
xfree(job_buffer_ptr->job_array);
}
xfree(job_buffer_ptr);
}
}
static void _free_all_job_info(job_info_msg_t *msg)
{
int i;
if ((msg == NULL) ||
(msg->job_array == NULL))
return;
for (i = 0; i < msg->record_count; i++)
_slurm_free_job_info_members (&msg->job_array[i]);
}
static void _slurm_free_job_info_members(job_info_t * job)
{
if (job) {
xfree(job->nodes);
xfree(job->partition);
xfree(job->alloc_node);
xfree(job->name);
xfree(job->node_inx);
xfree(job->req_nodes);
xfree(job->features);
xfree(job->req_node_inx);
}
}
/*
* slurm_free_job_step_info_response_msg - free the job step
* information response message
* IN msg - pointer to job step information response message
* NOTE: buffer is loaded by slurm_get_job_steps.
*/
void slurm_free_job_step_info_response_msg(job_step_info_response_msg_t *
msg)
{
if (msg != NULL) {
if (msg->job_steps != NULL) {
_free_all_step_info(msg);
xfree(msg->job_steps);
}
xfree(msg);
}
}
static void _free_all_step_info (job_step_info_response_msg_t *msg)
{
int i;
if ((msg == NULL) ||
(msg->job_steps == NULL))
return;
for (i = 0; i < msg->job_step_count; i++)
_slurm_free_job_step_info_members (&msg->job_steps[i]);
}
static void _slurm_free_job_step_info_members (job_step_info_t * msg)
{
if (msg != NULL) {
xfree(msg->partition);
xfree(msg->nodes);
}
}
/*
* slurm_free_node_info - free the node information response message
* IN msg - pointer to node information response message
* NOTE: buffer is loaded by slurm_load_node.
*/
void slurm_free_node_info_msg(node_info_msg_t * msg)
{
if (msg) {
if (msg->node_array) {
_free_all_node_info(msg);
xfree(msg->node_array);
}
xfree(msg);
}
}
static void _free_all_node_info(node_info_msg_t *msg)
{
int i;
if ((msg == NULL) ||
(msg->node_array == NULL))
return;
for (i = 0; i < msg->record_count; i++)
_slurm_free_node_info_members(&msg->node_array[i]);
}
static void _slurm_free_node_info_members(node_info_t * node)
{
if (node) {
xfree(node->name);
xfree(node->features);
xfree(node->partition);
xfree(node->reason);
}
}
/*
* slurm_free_partition_info_msg - free the partition information
* response message
* IN msg - pointer to partition information response message
* NOTE: buffer is loaded by slurm_load_partitions
*/
void slurm_free_partition_info_msg(partition_info_msg_t * msg)
{
if (msg) {
if (msg->partition_array) {
_free_all_partitions(msg);
xfree(msg->partition_array);
}
xfree(msg);
}
}
static void _free_all_partitions(partition_info_msg_t *msg)
{
int i;
if ((msg == NULL) ||
(msg->partition_array == NULL))
return;
for (i = 0; i < msg->record_count; i++)
_slurm_free_partition_info_members(
&msg->partition_array[i]);
}
static void _slurm_free_partition_info_members(partition_info_t * part)
{
if (part) {
xfree(part->name);
xfree(part->allow_groups);
xfree(part->nodes);
xfree(part->node_inx);
}
}
......@@ -41,6 +41,18 @@
#include "src/common/slurm_protocol_defs.h"
#include "src/common/xmalloc.h"
static void _free_all_job_info (job_info_msg_t *msg);
static void _slurm_free_job_info_members (job_info_t * job);
static void _free_all_node_info (node_info_msg_t *msg);
static void _slurm_free_node_info_members (node_info_t * node);
static void _free_all_partitions (partition_info_msg_t *msg);
static void _slurm_free_partition_info_members (partition_info_t * part);
static void _free_all_step_info (job_step_info_response_msg_t *msg);
static void _slurm_free_job_step_info_members (job_step_info_t * msg);
void slurm_free_last_update_msg(last_update_msg_t * msg)
{
......@@ -426,3 +438,279 @@ char *node_state_string_compact(enum node_states inx)
else
return node_state_string[inx];
}
/*
* slurm_free_resource_allocation_response_msg - free slurm resource
* allocation response message
* IN msg - pointer to allocation response message
* NOTE: buffer is loaded by slurm_allocate_resources
*/
void slurm_free_resource_allocation_response_msg (
resource_allocation_response_msg_t * msg)
{
if (msg) {
xfree(msg->node_list);
xfree(msg->cpus_per_node);
xfree(msg->cpu_count_reps);
xfree(msg->node_addr);
xfree(msg);
}
}
/*
* slurm_free_resource_allocation_and_run_response_msg - free slurm
* resource allocation and run job step response message
* IN msg - pointer to allocation and run job step response message
* NOTE: buffer is loaded by slurm_allocate_resources_and_run
*/
void slurm_free_resource_allocation_and_run_response_msg (
resource_allocation_and_run_response_msg_t * msg)
{
if (msg) {
xfree(msg->node_list);
xfree(msg->cpus_per_node);
xfree(msg->cpu_count_reps);
xfree(msg->node_addr);
slurm_cred_destroy(msg->cred);
# ifdef HAVE_LIBELAN3
if (msg->qsw_job)
qsw_free_jobinfo(msg->qsw_job);
# endif
xfree(msg);
}
}
/*
* slurm_free_job_step_create_response_msg - free slurm
* job step create response message
* IN msg - pointer to job step create response message
* NOTE: buffer is loaded by slurm_job_step_create
*/
void slurm_free_job_step_create_response_msg(
job_step_create_response_msg_t * msg)
{
if (msg) {
slurm_cred_destroy(msg->cred);
# ifdef HAVE_LIBELAN3
if (msg->qsw_job)
qsw_free_jobinfo(msg->qsw_job);
# endif
xfree(msg);
}
}
/*
* slurm_free_submit_response_response_msg - free slurm
* job submit response message
* IN msg - pointer to job submit response message
* NOTE: buffer is loaded by slurm_submit_batch_job
*/
void slurm_free_submit_response_response_msg(submit_response_msg_t * msg)
{
if (msg)
xfree(msg);
}
/*
* slurm_free_ctl_conf - free slurm control information response message
* IN msg - pointer to slurm control information response message
* NOTE: buffer is loaded by slurm_load_jobs
*/
void slurm_free_ctl_conf(slurm_ctl_conf_info_msg_t * config_ptr)
{
if (config_ptr) {
xfree(config_ptr->authtype);
xfree(config_ptr->backup_addr);
xfree(config_ptr->backup_controller);
xfree(config_ptr->control_addr);
xfree(config_ptr->control_machine);
xfree(config_ptr->epilog);
xfree(config_ptr->job_comp_loc);
xfree(config_ptr->job_comp_type);
xfree(config_ptr->job_credential_private_key);
xfree(config_ptr->job_credential_public_certificate);
xfree(config_ptr->plugindir);
xfree(config_ptr->prolog);
xfree(config_ptr->slurm_user_name);
xfree(config_ptr->slurmctld_pidfile);
xfree(config_ptr->slurmctld_logfile);
xfree(config_ptr->slurmd_logfile);
xfree(config_ptr->slurmd_pidfile);
xfree(config_ptr->slurmd_spooldir);
xfree(config_ptr->slurm_conf);
xfree(config_ptr->state_save_location);
xfree(config_ptr->tmp_fs);
xfree(config_ptr);
}
}
/*
* slurm_free_job_info - free the job information response message
* IN msg - pointer to job information response message
* NOTE: buffer is loaded by slurm_load_job.
*/
void slurm_free_job_info_msg(job_info_msg_t * job_buffer_ptr)
{
if (job_buffer_ptr) {
if (job_buffer_ptr->job_array) {
_free_all_job_info(job_buffer_ptr);
xfree(job_buffer_ptr->job_array);
}
xfree(job_buffer_ptr);
}
}
static void _free_all_job_info(job_info_msg_t *msg)
{
int i;
if ((msg == NULL) ||
(msg->job_array == NULL))
return;
for (i = 0; i < msg->record_count; i++)
_slurm_free_job_info_members (&msg->job_array[i]);
}
static void _slurm_free_job_info_members(job_info_t * job)
{
if (job) {
xfree(job->nodes);
xfree(job->partition);
xfree(job->alloc_node);
xfree(job->name);
xfree(job->node_inx);
xfree(job->req_nodes);
xfree(job->features);
xfree(job->req_node_inx);
}
}
/*
* slurm_free_job_step_info_response_msg - free the job step
* information response message
* IN msg - pointer to job step information response message
* NOTE: buffer is loaded by slurm_get_job_steps.
*/
void slurm_free_job_step_info_response_msg(job_step_info_response_msg_t *
msg)
{
if (msg != NULL) {
if (msg->job_steps != NULL) {
_free_all_step_info(msg);
xfree(msg->job_steps);
}
xfree(msg);
}
}
static void _free_all_step_info (job_step_info_response_msg_t *msg)
{
int i;
if ((msg == NULL) ||
(msg->job_steps == NULL))
return;
for (i = 0; i < msg->job_step_count; i++)
_slurm_free_job_step_info_members (&msg->job_steps[i]);
}
static void _slurm_free_job_step_info_members (job_step_info_t * msg)
{
if (msg != NULL) {
xfree(msg->partition);
xfree(msg->nodes);
}
}
/*
* slurm_free_node_info - free the node information response message
* IN msg - pointer to node information response message
* NOTE: buffer is loaded by slurm_load_node.
*/
void slurm_free_node_info_msg(node_info_msg_t * msg)
{
if (msg) {
if (msg->node_array) {
_free_all_node_info(msg);
xfree(msg->node_array);
}
xfree(msg);
}
}
static void _free_all_node_info(node_info_msg_t *msg)
{
int i;
if ((msg == NULL) ||
(msg->node_array == NULL))
return;
for (i = 0; i < msg->record_count; i++)
_slurm_free_node_info_members(&msg->node_array[i]);
}
static void _slurm_free_node_info_members(node_info_t * node)
{
if (node) {
xfree(node->name);
xfree(node->features);
xfree(node->partition);
xfree(node->reason);
}
}
/*
* slurm_free_partition_info_msg - free the partition information
* response message
* IN msg - pointer to partition information response message
* NOTE: buffer is loaded by slurm_load_partitions
*/
void slurm_free_partition_info_msg(partition_info_msg_t * msg)
{
if (msg) {
if (msg->partition_array) {
_free_all_partitions(msg);
xfree(msg->partition_array);
}
xfree(msg);
}
}
static void _free_all_partitions(partition_info_msg_t *msg)
{
int i;
if ((msg == NULL) ||
(msg->partition_array == NULL))
return;
for (i = 0; i < msg->record_count; i++)
_slurm_free_partition_info_members(
&msg->partition_array[i]);
}
static void _slurm_free_partition_info_members(partition_info_t * part)
{
if (part) {
xfree(part->name);
xfree(part->allow_groups);
xfree(part->nodes);
xfree(part->node_inx);
}
}
......@@ -433,6 +433,20 @@ void inline slurm_free_srun_ping_msg(srun_ping_msg_t * msg);
void inline slurm_free_srun_node_fail_msg(srun_node_fail_msg_t * msg);
void inline slurm_free_srun_timeout_msg(srun_timeout_msg_t * msg);
void slurm_free_resource_allocation_response_msg (
resource_allocation_response_msg_t * msg);
void slurm_free_resource_allocation_and_run_response_msg (
resource_allocation_and_run_response_msg_t * msg);
void slurm_free_job_step_create_response_msg(
job_step_create_response_msg_t * msg);
void slurm_free_submit_response_response_msg(submit_response_msg_t * msg);
void slurm_free_ctl_conf(slurm_ctl_conf_info_msg_t * config_ptr);
void slurm_free_job_info_msg(job_info_msg_t * job_buffer_ptr);
void slurm_free_job_step_info_response_msg(
job_step_info_response_msg_t * msg);
void slurm_free_node_info_msg(node_info_msg_t * msg);
void slurm_free_partition_info_msg(partition_info_msg_t * msg);
extern char *job_dist_string(uint16_t inx);
extern char *job_state_string(enum job_states inx);
extern char *job_state_string_compact(enum job_states inx);
......
......@@ -12,7 +12,6 @@ sbin_PROGRAMS = slurmctld
slurmctld_LDADD = \
$(top_builddir)/src/common/libcommon.la \
$(top_builddir)/src/common/libhostlist.la \
$(top_builddir)/src/api/libslurm.la \
$(top_builddir)/src/common/libdaemonize.la
......
......@@ -58,8 +58,6 @@
#include <string.h>
#include <unistd.h>
#include <slurm/slurm.h>
#include "src/common/list.h"
#include "src/common/log.h"
#include "src/common/macros.h"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment