本文整理汇总了C++中slurm_get_errno函数的典型用法代码示例。如果您正苦于以下问题:C++ slurm_get_errno函数的具体用法?C++ slurm_get_errno怎么用?C++ slurm_get_errno使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了slurm_get_errno函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _get_job_info
/* get details about this slurm job: jobid and allocated node */
static void _get_job_info(void)
{
xassert(params.job_id != NO_VAL);
if (slurm_sbcast_lookup(params.job_id, params.step_id, &sbcast_cred)
!= SLURM_SUCCESS) {
if (params.step_id == NO_VAL) {
error("Slurm job ID %u lookup error: %s",
params.job_id, slurm_strerror(slurm_get_errno()));
} else {
error("Slurm step ID %u.%u lookup error: %s",
params.job_id, params.step_id,
slurm_strerror(slurm_get_errno()));
}
exit(1);
}
if (params.step_id == NO_VAL)
verbose("jobid = %u", params.job_id);
else
verbose("jobid = %u.%u", params.job_id, params.step_id);
verbose("node_cnt = %u", sbcast_cred->node_cnt);
verbose("node_list = %s", sbcast_cred->node_list);
/* also see sbcast_cred->node_addr (array) */
if (params.verbose)
print_sbcast_cred(sbcast_cred->sbcast_cred);
/* do not bother to release the return message,
* we need to preserve and use most of the information later */
}
示例2: _blocks_dealloc
/*
* Test if any BG blocks are in deallocating state since they are
* probably related to this job we will want to sleep longer
* RET 1: deallocate in progress
* 0: no deallocate in progress
* -1: error occurred
*/
static int _blocks_dealloc(void)
{
static block_info_msg_t *bg_info_ptr = NULL, *new_bg_ptr = NULL;
int rc = 0, error_code = 0, i;
if (bg_info_ptr) {
error_code = slurm_load_block_info(bg_info_ptr->last_update,
&new_bg_ptr, SHOW_ALL);
if (error_code == SLURM_SUCCESS)
slurm_free_block_info_msg(bg_info_ptr);
else if (slurm_get_errno() == SLURM_NO_CHANGE_IN_DATA) {
error_code = SLURM_SUCCESS;
new_bg_ptr = bg_info_ptr;
}
} else {
error_code = slurm_load_block_info((time_t) NULL,
&new_bg_ptr, SHOW_ALL);
}
if (error_code) {
error("slurm_load_partitions: %s",
slurm_strerror(slurm_get_errno()));
return -1;
}
for (i=0; i<new_bg_ptr->record_count; i++) {
if(new_bg_ptr->block_array[i].state == BG_BLOCK_TERM) {
rc = 1;
break;
}
}
bg_info_ptr = new_bg_ptr;
return rc;
}
示例3: _get_job_info
/* get details about this slurm job: jobid and allocated node */
static int _get_job_info(struct bcast_parameters *params)
{
int rc;
xassert(params->job_id != NO_VAL);
rc = slurm_sbcast_lookup(params->job_id, params->step_id, &sbcast_cred);
if (rc != SLURM_SUCCESS) {
if (params->step_id == NO_VAL) {
error("Slurm job ID %u lookup error: %s",
params->job_id,
slurm_strerror(slurm_get_errno()));
} else {
error("Slurm step ID %u.%u lookup error: %s",
params->job_id, params->step_id,
slurm_strerror(slurm_get_errno()));
}
return rc;
}
if (params->step_id == NO_VAL)
verbose("jobid = %u", params->job_id);
else
verbose("stepid = %u.%u", params->job_id, params->step_id);
verbose("node_cnt = %u", sbcast_cred->node_cnt);
verbose("node_list = %s", sbcast_cred->node_list);
/* also see sbcast_cred->node_addr (array) */
if (params->verbose)
print_sbcast_cred(sbcast_cred->sbcast_cred);
/* do not bother to release the return message,
* we need to preserve and use most of the information later */
return rc;
}
示例4: scontrol_requeue
/*
* scontrol_requeue - requeue a pending or running batch job
* IN job_id_str - a job id
* RET 0 if no slurm error, errno otherwise. parsing error prints
* error message and returns 0
*/
extern int
scontrol_requeue(int argc, char **argv)
{
int rc = SLURM_SUCCESS;
int i;
uint32_t *ids;
uint32_t num_ids;
if (! argv[0]) {
exit_code = 1;
return 0;
}
ids = _get_job_ids(argv[0], &num_ids);
if (ids == NULL) {
exit_code = 1;
return 0;
}
for (i = 0; i < num_ids; i++) {
rc = slurm_requeue(ids[i], 0);
if (rc != SLURM_SUCCESS) {
fprintf(stderr, "%s array job_id %u\n",
slurm_strerror(slurm_get_errno()), ids[i]);
exit_code = 1;
break;
}
}
xfree(ids);
return rc;
}
示例5: slurm_signal_job
/*
* slurm_signal_job - send the specified signal to all steps of an existing job
* IN job_id - the job's id
* IN signal - signal number
* RET 0 on success, otherwise return -1 and set errno to indicate the error
*/
extern int
slurm_signal_job (uint32_t job_id, uint16_t signal)
{
int rc = SLURM_SUCCESS;
resource_allocation_response_msg_t *alloc_info = NULL;
signal_job_msg_t rpc;
if (slurm_allocation_lookup_lite(job_id, &alloc_info)) {
rc = slurm_get_errno();
goto fail1;
}
/* same remote procedure call for each node */
rpc.job_id = job_id;
rpc.signal = (uint32_t)signal;
rc = _local_send_recv_rc_msgs(alloc_info->node_list,
REQUEST_SIGNAL_JOB, &rpc);
slurm_free_resource_allocation_response_msg(alloc_info);
fail1:
if (rc) {
slurm_seterrno_ret(rc);
} else {
return SLURM_SUCCESS;
}
}
示例6: scontrol_load_nodes
/* Load current node table information into *node_buffer_pptr */
extern int
scontrol_load_nodes (node_info_msg_t ** node_buffer_pptr, uint16_t show_flags)
{
int error_code;
static int last_show_flags = 0xffff;
node_info_msg_t *node_info_ptr = NULL;
if (old_node_info_ptr) {
if (last_show_flags != show_flags)
old_node_info_ptr->last_update = (time_t) 0;
error_code = slurm_load_node (old_node_info_ptr->last_update,
&node_info_ptr, show_flags);
if (error_code == SLURM_SUCCESS)
slurm_free_node_info_msg (old_node_info_ptr);
else if (slurm_get_errno () == SLURM_NO_CHANGE_IN_DATA) {
node_info_ptr = old_node_info_ptr;
error_code = SLURM_SUCCESS;
if (quiet_flag == -1)
printf ("slurm_load_node no change in data\n");
}
}
else
error_code = slurm_load_node ((time_t) NULL, &node_info_ptr,
show_flags);
if (error_code == SLURM_SUCCESS) {
old_node_info_ptr = node_info_ptr;
last_show_flags = show_flags;
*node_buffer_pptr = node_info_ptr;
}
return error_code;
}
示例7: _wait_for_allocation_response
static resource_allocation_response_msg_t *
_wait_for_allocation_response(uint32_t job_id, const listen_t *listen,
int timeout)
{
resource_allocation_response_msg_t *resp = NULL;
int errnum;
info("job %u queued and waiting for resources", job_id);
if (_wait_for_alloc_rpc(listen, timeout, &resp) <= 0) {
errnum = errno;
/* Maybe the resource allocation response RPC got lost
* in the mail; surely it should have arrived by now.
* Let's see if the controller thinks that the allocation
* has been granted.
*/
if (slurm_allocation_lookup_lite(job_id, &resp) >= 0) {
return resp;
}
if (slurm_get_errno() == ESLURM_JOB_PENDING) {
debug3("Still waiting for allocation");
errno = errnum;
return NULL;
} else {
debug3("Unable to confirm allocation for job %u: %m",
job_id);
return NULL;
}
}
info("job %u has been allocated resources", job_id);
return resp;
}
示例8: get_new_info_config
extern int get_new_info_config(slurm_ctl_conf_info_msg_t **info_ptr)
{
static slurm_ctl_conf_info_msg_t *new_ctl_ptr = NULL;
int error_code = SLURM_NO_CHANGE_IN_DATA;
if (g_ctl_info_ptr) {
error_code = slurm_load_ctl_conf(g_ctl_info_ptr->last_update,
&new_ctl_ptr);
if (error_code == SLURM_SUCCESS)
slurm_free_ctl_conf(g_ctl_info_ptr);
else if (slurm_get_errno () == SLURM_NO_CHANGE_IN_DATA) {
error_code = SLURM_NO_CHANGE_IN_DATA;
new_ctl_ptr = g_ctl_info_ptr;
}
} else {
new_ctl_ptr = NULL;
error_code = slurm_load_ctl_conf((time_t) NULL, &new_ctl_ptr);
}
g_ctl_info_ptr = new_ctl_ptr;
if (g_ctl_info_ptr && (*info_ptr != g_ctl_info_ptr))
error_code = SLURM_SUCCESS;
*info_ptr = new_ctl_ptr;
return error_code;
}
示例9: scontrol_job_notify
/*
* Send message to stdout of specified job
* argv[0] == jobid
* argv[1]++ the message
*/
extern int
scontrol_job_notify(int argc, char *argv[])
{
int i;
uint32_t job_id;
char *message = NULL;
job_id = atoi(argv[0]);
if (job_id <= 0) {
fprintf(stderr, "Invalid job_id %s", argv[0]);
return 1;
}
for (i=1; i<argc; i++) {
if (message)
xstrfmtcat(message, " %s", argv[i]);
else
xstrcat(message, argv[i]);
}
i = slurm_notify_job(job_id, message);
xfree(message);
if (i)
return slurm_get_errno ();
else
return 0;
}
示例10: scontrol_create_part
/*
* scontrol_create_part - create a slurm partition configuration per the
* supplied arguments
* IN argc - count of arguments
* IN argv - list of arguments
* RET 0 if no slurm error, errno otherwise. parsing error prints
* error message and returns 0
*/
extern int
scontrol_create_part (int argc, char *argv[])
{
int update_cnt = 0;
update_part_msg_t part_msg;
slurm_init_part_desc_msg ( &part_msg );
scontrol_parse_part_options (argc, argv, &update_cnt, &part_msg);
if (part_msg.name == NULL) {
exit_code = 1;
error("PartitionName must be given.");
return 0;
} else if (xstrcasecmp(part_msg.name, "default") == 0) {
exit_code = 1;
error("PartitionName cannot be \"DEFAULT\".");
return 0;
}
if (update_cnt == 0) {
exit_code = 1;
error("No parameters specified");
return 0;
}
if (slurm_create_partition(&part_msg)) {
exit_code = 1;
slurm_perror("Error creating the partition");
return slurm_get_errno ();
} else
return 0;
}
示例11: scontrol_load_front_end
/*
* Load current front_end table information into *node_buffer_pptr
*/
extern int
scontrol_load_front_end(front_end_info_msg_t ** front_end_buffer_pptr)
{
int error_code;
front_end_info_msg_t *front_end_info_ptr = NULL;
if (old_front_end_info_ptr) {
error_code = slurm_load_front_end (
old_front_end_info_ptr->last_update,
&front_end_info_ptr);
if (error_code == SLURM_SUCCESS)
slurm_free_front_end_info_msg (old_front_end_info_ptr);
else if (slurm_get_errno () == SLURM_NO_CHANGE_IN_DATA) {
front_end_info_ptr = old_front_end_info_ptr;
error_code = SLURM_SUCCESS;
if (quiet_flag == -1) {
printf("slurm_load_front_end no change in "
"data\n");
}
}
}
else
error_code = slurm_load_front_end((time_t) NULL,
&front_end_info_ptr);
if (error_code == SLURM_SUCCESS) {
old_front_end_info_ptr = front_end_info_ptr;
*front_end_buffer_pptr = front_end_info_ptr;
}
return error_code;
}
示例12: scontrol_load_block
/* Load current partiton table information into *part_buffer_pptr */
extern int
scontrol_load_block (block_info_msg_t **block_info_pptr)
{
int error_code;
block_info_msg_t *info_ptr = NULL;
uint16_t show_flags = 0;
if (all_flag)
show_flags |= SHOW_ALL;
if (old_block_info_ptr) {
error_code = slurm_load_block_info(
old_block_info_ptr->last_update, &info_ptr, show_flags);
if (error_code == SLURM_SUCCESS)
slurm_free_block_info_msg(old_block_info_ptr);
else if (slurm_get_errno() == SLURM_NO_CHANGE_IN_DATA) {
info_ptr = old_block_info_ptr;
error_code = SLURM_SUCCESS;
if (quiet_flag == -1)
printf ("slurm_load_block no "
"change in data\n");
}
} else
error_code = slurm_load_block_info((time_t)NULL,
&info_ptr, show_flags);
if (error_code == SLURM_SUCCESS) {
old_block_info_ptr = info_ptr;
*block_info_pptr = info_ptr;
}
return error_code;
}
示例13: scontrol_update_part
/*
* scontrol_update_part - update the slurm partition configuration per the
* supplied arguments
* IN argc - count of arguments
* IN argv - list of arguments
* RET 0 if no slurm error, errno otherwise. parsing error prints
* error message and returns 0
*/
extern int
scontrol_update_part (int argc, char *argv[])
{
int update_cnt = 0;
update_part_msg_t part_msg;
slurm_init_part_desc_msg ( &part_msg );
scontrol_parse_part_options (argc, argv, &update_cnt, &part_msg);
if (part_msg.name == NULL) {
exit_code = 1;
error("PartitionName must be given.");
return 0;
}
if (update_cnt <= 1) {
exit_code = 1;
error("No changes specified");
return 0;
}
if (slurm_update_partition(&part_msg)) {
exit_code = 1;
return slurm_get_errno ();
} else
return 0;
}
示例14: _get_job_info
/* get details about this slurm job: jobid and allocated node */
static void _get_job_info(void)
{
char *jobid_str;
uint32_t jobid;
jobid_str = getenv("SLURM_JOB_ID");
if (!jobid_str) {
error("Command only valid from within SLURM job");
exit(1);
}
jobid = (uint32_t) atol(jobid_str);
verbose("jobid = %u", jobid);
if (slurm_sbcast_lookup(jobid, &sbcast_cred) != SLURM_SUCCESS) {
error("SLURM jobid %u lookup error: %s",
jobid, slurm_strerror(slurm_get_errno()));
exit(1);
}
verbose("node_cnt = %u", sbcast_cred->node_cnt);
verbose("node_list = %s", sbcast_cred->node_list);
/* also see sbcast_cred->node_addr (array) */
if (params.verbose)
print_sbcast_cred(sbcast_cred->sbcast_cred);
/* do not bother to release the return message,
* we need to preserve and use most of the information later */
}
示例15: scontrol_load_job
/* Load current job table information into *job_buffer_pptr */
extern int
scontrol_load_job(job_info_msg_t ** job_buffer_pptr, uint32_t job_id)
{
int error_code;
static uint16_t last_show_flags = 0xffff;
uint16_t show_flags = 0;
job_info_msg_t * job_info_ptr = NULL;
if (all_flag)
show_flags |= SHOW_ALL;
if (detail_flag) {
show_flags |= SHOW_DETAIL;
if (detail_flag > 1)
show_flags |= SHOW_DETAIL2;
}
if (federation_flag)
show_flags |= SHOW_FEDERATION;
if (local_flag)
show_flags |= SHOW_LOCAL;
if (sibling_flag)
show_flags |= SHOW_FEDERATION | SHOW_SIBLING;
if (old_job_info_ptr) {
if (last_show_flags != show_flags)
old_job_info_ptr->last_update = (time_t) 0;
if (job_id) {
error_code = slurm_load_job(&job_info_ptr, job_id,
show_flags);
} else {
error_code = slurm_load_jobs(
old_job_info_ptr->last_update,
&job_info_ptr, show_flags);
}
if (error_code == SLURM_SUCCESS)
slurm_free_job_info_msg (old_job_info_ptr);
else if (slurm_get_errno () == SLURM_NO_CHANGE_IN_DATA) {
job_info_ptr = old_job_info_ptr;
error_code = SLURM_SUCCESS;
if (quiet_flag == -1)
printf ("slurm_load_jobs no change in data\n");
}
} else if (job_id) {
error_code = slurm_load_job(&job_info_ptr, job_id, show_flags);
} else {
error_code = slurm_load_jobs((time_t) NULL, &job_info_ptr,
show_flags);
}
if (error_code == SLURM_SUCCESS) {
old_job_info_ptr = job_info_ptr;
if (job_id)
old_job_info_ptr->last_update = (time_t) 0;
last_show_flags = show_flags;
*job_buffer_pptr = job_info_ptr;
}
return error_code;
}