示例#1
0
文件: bb_info.c 项目: HDOD/slurm
/* Get the Burst buffer information */
extern int get_new_info_bb(burst_buffer_info_msg_t **info_ptr, int force)
{
	static burst_buffer_info_msg_t *new_bb_ptr = NULL;
	int error_code = SLURM_NO_CHANGE_IN_DATA;
	time_t now = time(NULL);
	static time_t last;
	static bool changed = 0;

	if (g_bb_info_ptr && !force
	    && ((now - last) < working_sview_config.refresh_delay)) {
		if (*info_ptr != g_bb_info_ptr)
			error_code = SLURM_SUCCESS;
		*info_ptr = g_bb_info_ptr;
		if (changed)
			error_code = SLURM_SUCCESS;
		goto end_it;
	}
	last = now;
	if (g_bb_info_ptr) {
		error_code = slurm_load_burst_buffer_info(&new_bb_ptr);
		if (error_code == SLURM_SUCCESS) {
			slurm_free_burst_buffer_info_msg(g_bb_info_ptr);
			changed = 1;
		} else if (slurm_get_errno() == SLURM_NO_CHANGE_IN_DATA) {
			error_code = SLURM_NO_CHANGE_IN_DATA;
			new_bb_ptr = g_bb_info_ptr;
			changed = 0;
		}
	} else {
		new_bb_ptr = NULL;
		error_code = slurm_load_burst_buffer_info(&new_bb_ptr);
		changed = 1;
	}

	g_bb_info_ptr = new_bb_ptr;

	if (g_bb_info_ptr && (*info_ptr != g_bb_info_ptr))
		error_code = SLURM_SUCCESS;

	*info_ptr = g_bb_info_ptr;
end_it:
	return error_code;
}
示例#2
0
/*
 * scontrol_print_burst_buffer - print all burst_buffer information to stdout
 */
extern void scontrol_print_burst_buffer(void)
{
	int error_code, i;
	burst_buffer_info_msg_t *burst_buffer_info_ptr = NULL;
	burst_buffer_info_t *burst_buffer_ptr = NULL;

	error_code = slurm_load_burst_buffer_info(&burst_buffer_info_ptr);
	if (error_code) {
		exit_code = 1;
		if (quiet_flag != 1)
			slurm_perror ("slurm_load_burst_buffer error");
		return;
	}

	burst_buffer_ptr = burst_buffer_info_ptr->burst_buffer_array;
	for (i = 0; i < burst_buffer_info_ptr->record_count; i++) {
		slurm_print_burst_buffer_record(stdout, &burst_buffer_ptr[i],
						one_liner);
	}

	slurm_free_burst_buffer_info_msg(burst_buffer_info_ptr);
}