Newer
Older
int unpack_job_info_members ( job_info_t * job , Buf buffer )
{
uint16_t uint16_tmp;
char * node_inx_str;
unpack32 (&job->job_id, buffer);
unpack32 (&job->user_id, buffer);
unpack16 (&job->job_state, buffer);
unpack32 (&job->time_limit, buffer);
unpack_time (&job->start_time, buffer);
unpack_time (&job->end_time, buffer);
unpack32 (&job->priority, buffer);
unpackstr_xmalloc (&job->nodes, &uint16_tmp, buffer);
unpackstr_xmalloc (&job->partition, &uint16_tmp, buffer);
unpackstr_xmalloc (&job->name, &uint16_tmp, buffer);
unpackstr_xmalloc (&node_inx_str, &uint16_tmp, buffer);
job->node_inx = bitfmt2int("");
else {
job->node_inx = bitfmt2int(node_inx_str);
xfree ( node_inx_str );
}
unpack32 (&job->num_procs, buffer);
unpack32 (&job->num_nodes, buffer);
unpack16 (&job->shared, buffer);
unpack16 (&job->contiguous, buffer);
unpack32 (&job->min_procs, buffer);
unpack32 (&job->min_memory, buffer);
unpack32 (&job->min_tmp_disk, buffer);
unpackstr_xmalloc (&job->req_nodes, &uint16_tmp, buffer);
unpackstr_xmalloc (&node_inx_str, &uint16_tmp, buffer);
job->req_node_inx = bitfmt2int("");
else {
unpackstr_xmalloc (&job->features, &uint16_tmp, buffer);

tewk
committed
}
void pack_slurm_ctl_conf ( slurm_ctl_conf_info_msg_t * build_ptr, Buf buffer )
pack_time (build_ptr->last_update, buffer);
packstr (build_ptr->backup_controller, buffer);
packstr (build_ptr->control_machine, buffer);
packstr (build_ptr->epilog, buffer);
pack16 (build_ptr->fast_schedule, buffer);
pack16 (build_ptr->hash_base, buffer);
pack16 (build_ptr->heartbeat_interval, buffer);
pack16 (build_ptr->kill_wait, buffer);
packstr (build_ptr->prioritize, buffer);
packstr (build_ptr->prolog, buffer);
pack16 (build_ptr->slurmctld_timeout, buffer);
pack16 (build_ptr->slurmd_timeout, buffer);
packstr (build_ptr->slurm_conf, buffer);
packstr (build_ptr->state_save_location, buffer);
packstr (build_ptr->tmp_fs, buffer);
packstr (build_ptr->job_credential_private_key, buffer);
packstr (build_ptr->job_credential_public_certificate, buffer);
}
int unpack_slurm_ctl_conf ( slurm_ctl_conf_info_msg_t **build_buffer_ptr, Buf buffer )
{
uint16_t uint16_tmp;
slurm_ctl_conf_info_msg_t * build_ptr ;
/* alloc memory for structure */
build_ptr = xmalloc ( sizeof ( slurm_ctl_conf_t ) ) ;
if (build_ptr == NULL)
return ENOMEM;
/* load the data values */
/* unpack timestamp of snapshot */
unpack_time (&build_ptr->last_update, buffer);
unpackstr_xmalloc (&build_ptr->backup_controller, &uint16_tmp, buffer);
unpackstr_xmalloc (&build_ptr->control_machine, &uint16_tmp, buffer);
unpackstr_xmalloc (&build_ptr->epilog, &uint16_tmp, buffer);
unpack16 (&build_ptr->fast_schedule, buffer);
unpack16 (&build_ptr->hash_base, buffer);
unpack16 (&build_ptr->heartbeat_interval, buffer);
unpack16 (&build_ptr->kill_wait, buffer);
unpackstr_xmalloc (&build_ptr->prioritize, &uint16_tmp, buffer);
unpackstr_xmalloc (&build_ptr->prolog, &uint16_tmp, buffer);
unpack16 (&build_ptr->slurmctld_timeout, buffer);
unpack16 (&build_ptr->slurmd_timeout, buffer);
unpackstr_xmalloc (&build_ptr->slurm_conf, &uint16_tmp, buffer);
unpackstr_xmalloc (&build_ptr->state_save_location, &uint16_tmp, buffer);
unpackstr_xmalloc (&build_ptr->tmp_fs, &uint16_tmp, buffer);
unpackstr_xmalloc (&build_ptr->job_credential_private_key, &uint16_tmp, buffer);
unpackstr_xmalloc (&build_ptr->job_credential_public_certificate, &uint16_tmp, buffer);
*build_buffer_ptr = build_ptr ;
return 0 ;
/* pack_job_desc
* packs a job_desc struct
* header - the body structure to pack
* buffer - destination of the pack, contains pointers that are automatically updated
void pack_job_desc ( job_desc_msg_t * job_desc_ptr, Buf buffer )
{
/* load the data values */
/* unpack timestamp of snapshot */
pack16 (job_desc_ptr->contiguous, buffer);
pack16 (job_desc_ptr->kill_on_node_fail, buffer);
packstr (job_desc_ptr->features, buffer);
pack32 (job_desc_ptr->job_id, buffer);
packstr (job_desc_ptr->name, buffer);
pack32 (job_desc_ptr->min_procs, buffer);
pack32 (job_desc_ptr->min_memory, buffer);
pack32 (job_desc_ptr->min_tmp_disk, buffer);
packstr (job_desc_ptr->partition, buffer);
pack32 (job_desc_ptr->priority, buffer);
packstr (job_desc_ptr->req_nodes, buffer);
packstring_array (job_desc_ptr->environment, job_desc_ptr->env_size, buffer);
packstr (job_desc_ptr->script, buffer);
packstr (job_desc_ptr->stderr, buffer);
packstr (job_desc_ptr->stdin, buffer);
packstr (job_desc_ptr->stdout, buffer);
packstr (job_desc_ptr->work_dir, buffer);
pack16 (job_desc_ptr->shared, buffer);
pack32 (job_desc_ptr->time_limit, buffer);
pack32 (job_desc_ptr->num_procs, buffer);
pack32 (job_desc_ptr->num_nodes, buffer);
pack32 (job_desc_ptr->user_id, buffer);
* unpacks a job_desc struct
* header - the body structure to unpack
* buffer - source of the unpack, contains pointers that are automatically updated
int unpack_job_desc ( job_desc_msg_t **job_desc_buffer_ptr, Buf buffer )
{
uint16_t uint16_tmp;
job_desc_msg_t * job_desc_ptr ;
/* alloc memory for structure */
job_desc_ptr = xmalloc ( sizeof ( job_desc_msg_t ) ) ;
if (job_desc_ptr== NULL)
{
return ENOMEM ;
}
/* load the data values */
/* unpack timestamp of snapshot */
unpack16 (&job_desc_ptr->contiguous, buffer);
unpack16 (&job_desc_ptr->kill_on_node_fail, buffer);
unpackstr_xmalloc (&job_desc_ptr->features, &uint16_tmp, buffer);
unpack32 (&job_desc_ptr->job_id, buffer);
unpackstr_xmalloc (&job_desc_ptr->name, &uint16_tmp, buffer);
unpack32 (&job_desc_ptr->min_procs, buffer);
unpack32 (&job_desc_ptr->min_memory, buffer);
unpack32 (&job_desc_ptr->min_tmp_disk, buffer);
unpackstr_xmalloc (&job_desc_ptr->partition, &uint16_tmp, buffer);
unpack32 (&job_desc_ptr->priority, buffer);
unpackstr_xmalloc (&job_desc_ptr->req_nodes, &uint16_tmp, buffer);
unpackstring_array (&job_desc_ptr->environment, &job_desc_ptr->env_size, buffer);
unpackstr_xmalloc (&job_desc_ptr->script, &uint16_tmp, buffer);
unpackstr_xmalloc (&job_desc_ptr->stderr, &uint16_tmp, buffer);
unpackstr_xmalloc (&job_desc_ptr->stdin, &uint16_tmp, buffer);
unpackstr_xmalloc (&job_desc_ptr->stdout, &uint16_tmp, buffer);
unpackstr_xmalloc (&job_desc_ptr->work_dir, &uint16_tmp, buffer);
unpack16 (&job_desc_ptr->shared, buffer);
unpack32 (&job_desc_ptr->time_limit, buffer);
unpack32 (&job_desc_ptr->num_procs, buffer);
unpack32 (&job_desc_ptr->num_nodes, buffer);
unpack32 (&job_desc_ptr->user_id, buffer);
return 0 ;
}
void pack_last_update ( last_update_msg_t * msg , Buf buffer )
{
pack_time ( msg -> last_update , buffer ) ;
}
int unpack_last_update ( last_update_msg_t ** msg , Buf buffer )
{
last_update_msg_t * last_update_msg ;
last_update_msg = xmalloc ( sizeof ( last_update_msg_t ) ) ;
unpack_time ( & last_update_msg -> last_update , buffer ) ;
*msg = last_update_msg ;
return 0 ;
void pack_return_code ( return_code_msg_t * msg , Buf buffer )
pack32 ( msg -> return_code , buffer ) ;
int unpack_return_code ( return_code_msg_t ** msg , Buf buffer )
{
return_code_msg_t * return_code_msg ;
return_code_msg = xmalloc ( sizeof ( return_code_msg_t ) ) ;
if ( return_code_msg == NULL)
{
*msg = NULL ;
return ENOMEM ;
}
unpack32 ( & return_code_msg -> return_code , buffer ) ;
*msg = return_code_msg ;
return 0 ;
}
void pack_reattach_tasks_streams_msg ( reattach_tasks_streams_msg_t * msg , Buf buffer )
pack32 ( msg -> job_id , buffer ) ;
pack32 ( msg -> job_step_id , buffer ) ;
pack32 ( msg -> uid , buffer ) ;
pack_job_credential ( msg -> credential , buffer ) ;
pack32 ( msg -> tasks_to_reattach , buffer ) ;
slurm_pack_slurm_addr ( & msg -> streams , buffer ) ;
pack32_array ( msg -> global_task_ids , ( uint16_t ) msg -> tasks_to_reattach , buffer ) ;
int unpack_reattach_tasks_streams_msg ( reattach_tasks_streams_msg_t ** msg_ptr , Buf buffer )
{
uint16_t uint16_tmp;
reattach_tasks_streams_msg_t * msg ;
msg = xmalloc ( sizeof ( reattach_tasks_streams_msg_t ) ) ;
if (msg == NULL)
{
*msg_ptr = NULL ;
return ENOMEM ;
}
unpack32 ( & msg -> job_id , buffer ) ;
unpack32 ( & msg -> job_step_id , buffer ) ;
unpack32 ( & msg -> uid , buffer ) ;
unpack_job_credential( & msg -> credential , buffer ) ;
unpack32 ( & msg -> tasks_to_reattach , buffer ) ;
slurm_unpack_slurm_addr_no_alloc ( & msg -> streams , buffer ) ;
unpack32_array ( & msg -> global_task_ids , & uint16_tmp , buffer ) ;
*msg_ptr = msg ;
return 0 ;
}
void pack_task_exit_msg ( task_exit_msg_t * msg , Buf buffer )
pack32 ( msg -> task_id , buffer ) ;
pack32 ( msg -> return_code , buffer ) ;
int unpack_task_exit_msg ( task_exit_msg_t ** msg_ptr , Buf buffer )
if (msg == NULL)
{
*msg_ptr = NULL ;
return ENOMEM ;
}
unpack32 ( & msg -> task_id , buffer ) ;
unpack32 ( & msg -> return_code , buffer ) ;
void pack_launch_tasks_response_msg ( launch_tasks_response_msg_t * msg , Buf buffer )
pack32 ( msg -> return_code , buffer ) ;
packstr ( msg -> node_name , buffer ) ;
pack32 ( msg -> srun_node_id , buffer ) ;
int unpack_launch_tasks_response_msg ( launch_tasks_response_msg_t ** msg_ptr , Buf buffer )
{
uint16_t uint16_tmp;
launch_tasks_response_msg_t * msg ;
msg = xmalloc ( sizeof ( launch_tasks_response_msg_t ) ) ;
if (msg == NULL)
{
*msg_ptr = NULL ;
return ENOMEM ;
}
unpack32 ( & msg -> return_code , buffer ) ;
unpackstr_xmalloc ( & msg -> node_name , & uint16_tmp , buffer ) ;
unpack32 ( & msg -> srun_node_id , buffer ) ;
*msg_ptr = msg ;
return 0 ;
}
void pack_launch_tasks_request_msg ( launch_tasks_request_msg_t * msg , Buf buffer )
{
pack32 ( msg -> job_id , buffer ) ;
pack32 ( msg -> job_step_id , buffer ) ;
pack32 ( msg -> nnodes, buffer ) ;
pack32 ( msg -> nprocs, buffer ) ;
pack32 ( msg -> uid , buffer ) ;
pack32 ( msg -> srun_node_id , buffer ) ;
pack_job_credential ( msg -> credential , buffer ) ;
pack32 ( msg -> tasks_to_launch , buffer ) ;
packstring_array ( msg -> env , msg -> envc , buffer ) ;
packstr ( msg -> cwd , buffer ) ;
packstring_array ( msg -> argv , msg -> argc , buffer ) ;
slurm_pack_slurm_addr ( & msg -> response_addr , buffer ) ;
slurm_pack_slurm_addr ( & msg -> streams , buffer ) ;
pack32_array ( msg -> global_task_ids , ( uint16_t ) msg -> tasks_to_launch , buffer ) ;
qsw_pack_jobinfo( msg -> qsw_job , buffer ) ;
int unpack_launch_tasks_request_msg ( launch_tasks_request_msg_t ** msg_ptr , Buf buffer )
launch_tasks_request_msg_t * msg ;
msg = xmalloc ( sizeof ( launch_tasks_request_msg_t ) ) ;
if (msg == NULL)
{
*msg_ptr = NULL ;
return ENOMEM ;
}
unpack32 ( & msg -> job_id , buffer ) ;
unpack32 ( & msg -> job_step_id , buffer ) ;
unpack32 ( & msg -> nnodes, buffer ) ;
unpack32 ( & msg -> nprocs, buffer ) ;
unpack32 ( & msg -> uid , buffer ) ;
unpack32 ( & msg -> srun_node_id , buffer ) ;
unpack_job_credential( & msg -> credential , buffer ) ;
unpack32 ( & msg -> tasks_to_launch , buffer ) ;
unpackstring_array ( & msg -> env , & msg -> envc , buffer ) ;
unpackstr_xmalloc ( & msg -> cwd , & uint16_tmp , buffer ) ;
unpackstring_array ( & msg -> argv , & msg->argc , buffer ) ;
slurm_unpack_slurm_addr_no_alloc ( & msg -> response_addr , buffer ) ;
slurm_unpack_slurm_addr_no_alloc ( & msg -> streams , buffer ) ;
unpack32_array ( & msg -> global_task_ids , & uint16_tmp , buffer ) ;
qsw_alloc_jobinfo(&msg->qsw_job);
if (qsw_unpack_jobinfo(msg->qsw_job, (void **) buffer) < 0) {
error("qsw_unpack_jobinfo: %m");
return -1;
}
*msg_ptr = msg ;
return 0 ;
}
void pack_cancel_tasks_msg ( kill_tasks_msg_t * msg , Buf buffer )
pack32 ( msg -> job_id , buffer ) ;
pack32 ( msg -> job_step_id , buffer ) ;
pack32 ( msg -> signal , buffer ) ;
int unpack_cancel_tasks_msg ( kill_tasks_msg_t ** msg_ptr , Buf buffer )
msg = xmalloc ( sizeof ( kill_tasks_msg_t ) ) ;

Moe Jette
committed
if ( msg == NULL)
{
*msg_ptr = NULL ;
return ENOMEM ;
}
unpack32 ( & msg -> job_id , buffer ) ;
unpack32 ( & msg -> job_step_id , buffer ) ;
unpack32 ( & msg -> signal , buffer ) ;
*msg_ptr = msg ;
return 0 ;
}
void pack_shutdown_msg ( shutdown_msg_t * msg , Buf buffer )

Moe Jette
committed
{
pack16 ( msg -> core , buffer ) ;

Moe Jette
committed
}
int unpack_shutdown_msg ( shutdown_msg_t ** msg_ptr , Buf buffer )

Moe Jette
committed
{
shutdown_msg_t * msg ;
msg = xmalloc ( sizeof ( shutdown_msg_t ) ) ;
if ( msg == NULL)
{
*msg_ptr = NULL ;
return ENOMEM ;
}
unpack16 ( & msg -> core , buffer ) ;

Moe Jette
committed
*msg_ptr = msg ;
return 0 ;
}
void pack_job_step_id ( job_step_id_t * msg , Buf buffer )
pack_time ( msg -> last_update , buffer ) ;
pack32 ( msg -> job_id , buffer ) ;
pack32 ( msg -> job_step_id , buffer ) ;
int unpack_job_step_id ( job_step_id_t ** msg_ptr , Buf buffer )
{
job_step_id_msg_t * msg ;
msg = xmalloc ( sizeof ( job_step_id_msg_t ) ) ;
if ( msg == NULL)
{
*msg_ptr = NULL ;
return ENOMEM ;
}
unpack_time ( & msg -> last_update , buffer ) ;
unpack32 ( & msg -> job_id , buffer ) ;
unpack32 ( & msg -> job_step_id , buffer ) ;
*msg_ptr = msg ;
return 0 ;
}
void pack_get_job_step_info ( job_step_info_request_msg_t * msg , Buf buffer )
pack_time ( msg -> last_update , buffer ) ;
pack32 ( msg -> job_id , buffer ) ;
pack32 ( msg -> step_id , buffer ) ;
int unpack_get_job_step_info ( job_step_info_request_msg_t ** msg , Buf buffer )
{
job_step_info_request_msg_t * job_step_info ;
job_step_info = xmalloc ( sizeof ( job_step_info_request_msg_t ) ) ;
if ( job_step_info == NULL)
{
*msg = NULL ;
return ENOMEM ;
}
unpack_time ( & job_step_info -> last_update , buffer ) ;
unpack32 ( & job_step_info -> job_id , buffer ) ;
unpack32 ( & job_step_info -> step_id , buffer ) ;
*msg = job_step_info ;
return 0 ;
}
void pack_slurm_addr_array ( slurm_addr * slurm_address , uint16_t size_val, Buf buffer )
{
int i=0;
uint16_t nl = htons(size_val);
pack16( nl, buffer );
for ( i=0; i < size_val; i++ )
{
slurm_pack_slurm_addr ( slurm_address + i , buffer ) ;
void unpack_slurm_addr_array ( slurm_addr ** slurm_address , uint16_t * size_val , Buf buffer )
{
int i=0;
uint16_t nl ;
unpack16( & nl , buffer );
*size_val = ntohs ( nl ) ;
*slurm_address = xmalloc( (*size_val) * sizeof( slurm_addr ) );
for ( i=0; i < *size_val; i++ )
{
slurm_unpack_slurm_addr_no_alloc ( (*slurm_address) + i , buffer );
}
}
void
pack_batch_job_launch ( batch_job_launch_msg_t* msg , Buf buffer )
{
assert ( msg != NULL );
pack32 ( msg -> job_id, buffer ) ;
pack32 ( msg -> user_id, buffer ) ;
packstr ( msg -> nodes, buffer ) ;
packstr ( msg -> script, buffer ) ;
packstr ( msg -> work_dir, buffer ) ;
packstr ( msg -> stderr, buffer ) ;
packstr ( msg -> stdin, buffer ) ;
packstr ( msg -> stdout, buffer ) ;
pack16 ( msg -> argc, buffer ) ;
packstring_array (msg -> argv, msg -> argc, buffer);
pack16 ( msg -> env_size, buffer ) ;
packstring_array (msg -> environment, msg -> env_size, buffer);
unpack_batch_job_launch( batch_job_launch_msg_t** msg , Buf buffer )
{
uint16_t uint16_tmp;
batch_job_launch_msg_t *launch_msg_ptr ;
assert ( msg != NULL );
launch_msg_ptr = xmalloc ( sizeof (batch_job_launch_msg_t) ) ;
*msg = launch_msg_ptr ;
if (launch_msg_ptr == NULL)
return ;
unpack32 ( & launch_msg_ptr -> job_id, buffer ) ;
unpack32 ( & launch_msg_ptr -> user_id, buffer ) ;
unpackstr_xmalloc ( & launch_msg_ptr -> nodes, & uint16_tmp , buffer ) ;
unpackstr_xmalloc ( & launch_msg_ptr -> script, & uint16_tmp , buffer ) ;
unpackstr_xmalloc ( & launch_msg_ptr -> work_dir, & uint16_tmp , buffer ) ;
unpackstr_xmalloc ( & launch_msg_ptr -> stderr, & uint16_tmp , buffer ) ;
unpackstr_xmalloc ( & launch_msg_ptr -> stdin, & uint16_tmp , buffer ) ;
unpackstr_xmalloc ( & launch_msg_ptr -> stdout, & uint16_tmp , buffer ) ;
unpack16 ( & launch_msg_ptr -> argc, buffer ) ;
unpackstring_array (& launch_msg_ptr -> argv, &launch_msg_ptr -> argc, buffer);
unpack16 ( & launch_msg_ptr -> env_size, buffer ) ;
unpackstring_array (& launch_msg_ptr -> environment, &launch_msg_ptr -> env_size, buffer);
return;
}
void pack_ ( * msg , Buf buffer )
assert ( msg != NULL );
pack16 ( msg -> , buffer ) ;
pack32 ( msg -> , buffer ) ;
packstr ( msg -> , buffer ) ;
void unpack_ ( ** msg_ptr , Buf buffer )
uint16_t uint16_tmp;
assert ( msg_ptr != NULL );
msg = xmalloc ( sizeof ( ) ) ;
{
return ;
}
unpack16 ( & msg -> , buffer ) ;
unpack32 ( & msg -> , buffer ) ;
unpackstr_xmalloc ( & msg -> , & uint16_tmp , buffer ) ;