static int _sort_by_job_size(void *void1, void *void2) { int diff; sinfo_data_t *sinfo1; sinfo_data_t *sinfo2; uint32_t val1 = 0, val2 = 0; _get_sinfo_from_void(&sinfo1, &sinfo2, void1, void2); if (sinfo1->part_info) { val1 = sinfo1->part_info->max_nodes; if (val1 != INFINITE) val1 += sinfo1->part_info->min_nodes; } if (sinfo2->part_info) { val2 = sinfo2->part_info->max_nodes; if (val2 != INFINITE) val2 += sinfo2->part_info->min_nodes; } diff = _diff_uint32(val1, val2); if (reverse_order) diff = -diff; return diff; }
static int _sort_step_by_id(void *void1, void *void2) { int diff; job_step_info_t *step1; job_step_info_t *step2; _get_step_info_from_void(&step1, &step2, void1, void2); diff = _diff_uint32(step1->job_id, step2->job_id); if (diff == 0) diff = _diff_uint32(step1->step_id, step2->step_id); if (reverse_order) diff = -diff; return diff; }
static int _sort_job_by_priority(void *void1, void *void2) { int diff; job_info_t *job1, *job2; uint32_t prio1 = 0, prio2 = 0; _get_part_prio_info_from_void(&prio1, &prio2, void1, void2); diff = _diff_uint32(prio1, prio2); if (diff == 0) { /* Same partition priority, test job priority */ _get_job_info_from_void(&job1, &job2, void1, void2); diff = _diff_uint32(job1->priority, job2->priority); } if (reverse_order) diff = -diff; return diff; }
static int _sort_step_by_time_limit(void *void1, void *void2) { int diff; job_step_info_t *step1; job_step_info_t *step2; _get_step_info_from_void(&step1, &step2, void1, void2); diff = _diff_uint32(step1->time_limit, step2->time_limit); if (reverse_order) diff = -diff; return diff; }
static int _sort_job_by_user_id(void *void1, void *void2) { int diff; job_info_t *job1; job_info_t *job2; _get_job_info_from_void(&job1, &job2, void1, void2); diff = _diff_uint32(job1->user_id, job2->user_id); if (reverse_order) diff = -diff; return diff; }
static int _sort_job_by_min_tmp_disk(void *void1, void *void2) { int diff; job_info_t *job1; job_info_t *job2; _get_job_info_from_void(&job1, &job2, void1, void2); diff = _diff_uint32(job1->pn_min_tmp_disk, job2->pn_min_tmp_disk); if (reverse_order) diff = -diff; return diff; }
static int _sort_job_by_threads(void *void1, void *void2) { int diff; job_info_t *job1; job_info_t *job2; _get_job_info_from_void(&job1, &job2, void1, void2); diff = _diff_uint32(job1->threads_per_core, job2->threads_per_core); if (reverse_order) diff = -diff; return diff; }
static int _sort_by_weight(void *void1, void *void2) { int diff; sinfo_data_t *sinfo1; sinfo_data_t *sinfo2; _get_sinfo_from_void(&sinfo1, &sinfo2, void1, void2); diff = _diff_uint32(sinfo1->min_weight, sinfo2->min_weight); if (reverse_order) diff = -diff; return diff; }
static int _sort_by_nodes(void *void1, void *void2) { int diff; sinfo_data_t *sinfo1; sinfo_data_t *sinfo2; _get_sinfo_from_void(&sinfo1, &sinfo2, void1, void2); diff = _diff_uint32(sinfo1->nodes_total, sinfo2->nodes_total); if (reverse_order) diff = -diff; return diff; }
static int _sort_job_by_num_sct(void *void1, void *void2) { int diffs, diffc, difft; job_info_t *job1; job_info_t *job2; _get_job_info_from_void(&job1, &job2, void1, void2); diffs = _diff_uint32(job1->sockets_per_node, job2->sockets_per_node); diffc = _diff_uint32(job1->cores_per_socket, job2->cores_per_socket); difft = _diff_uint32(job1->threads_per_core, job2->threads_per_core); if (reverse_order) { diffs = -diffs; diffc = -diffc; difft = -difft; } if (diffs) return diffs; else if (diffc) return diffc; else return difft; }
static int _sort_by_sct(void *void1, void *void2) { int diffs, diffc, difft; sinfo_data_t *sinfo1; sinfo_data_t *sinfo2; _get_sinfo_from_void(&sinfo1, &sinfo2, void1, void2); diffs = _diff_uint32(sinfo1->min_sockets, sinfo2->min_sockets); diffc = _diff_uint32(sinfo1->min_cores, sinfo2->min_cores); difft = _diff_uint32(sinfo1->min_threads, sinfo2->min_threads); if (reverse_order) { diffs = -diffs; diffc = -diffc; difft = -difft; } if (diffs) return diffs; else if (diffc) return diffc; else return difft; }
static int _sort_job_by_min_memory(void *void1, void *void2) { int diff; job_info_t *job1; job_info_t *job2; _get_job_info_from_void(&job1, &job2, void1, void2); job1->pn_min_memory &= (~MEM_PER_CPU); job2->pn_min_memory &= (~MEM_PER_CPU); diff = _diff_uint32(job1->pn_min_memory, job2->pn_min_memory); if (reverse_order) diff = -diff; return diff; }
static int _sort_by_priority_tier(void *void1, void *void2) { int diff; sinfo_data_t *sinfo1; sinfo_data_t *sinfo2; uint32_t val1 = 0, val2 = 0; _get_sinfo_from_void(&sinfo1, &sinfo2, void1, void2); if (sinfo1->part_info) val1 = sinfo1->part_info->priority_tier; if (sinfo2->part_info) val2 = sinfo2->part_info->priority_tier; diff = _diff_uint32(val1, val2); if (reverse_order) diff = -diff; return diff; }
static int _sort_job_by_id(void *void1, void *void2) { int diff; job_info_t *job1; job_info_t *job2; uint32_t job_id1, job_id2; _get_job_info_from_void(&job1, &job2, void1, void2); if (job1->pack_job_id) job_id1 = job1->pack_job_id; else if (job1->array_task_id == NO_VAL) job_id1 = job1->job_id; else job_id1 = job1->array_job_id; if (job2->pack_job_id) job_id2 = job2->pack_job_id; else if (job2->array_task_id == NO_VAL) job_id2 = job2->job_id; else job_id2 = job2->array_job_id; if (job_id1 == job_id2) { if (job1->pack_job_id) job_id1 = job1->pack_job_offset; else job_id1 = job1->array_task_id; if (job2->pack_job_id) job_id2 = job2->pack_job_offset; else job_id2 = job2->array_task_id; } diff = _diff_uint32(job_id1, job_id2); if (reverse_order) diff = -diff; return diff; }