#ifndef __MXQ_GROUP_H__ #define __MXQ_GROUP_H__ 1 #include <stdint.h> #include <mysql.h> #include "mx_mysql.h" struct mxq_group { uint64_t group_id; char * group_name; uint8_t group_status; uint64_t group_flags; uint16_t group_priority; char * group_blacklist; char * group_whitelist; char * prerequisites; char * tags; uint32_t user_uid; char * user_name; uint32_t user_gid; char * user_group; char * job_command; uint16_t job_threads; uint64_t job_memory; uint32_t job_time; uint32_t job_tmpdir_size; /* GB */ uint16_t job_max_per_node; uint16_t job_gpu; uint64_t group_jobs; uint64_t group_jobs_inq; uint64_t group_jobs_running; uint64_t group_jobs_finished; uint64_t group_jobs_failed; uint64_t group_jobs_cancelled; uint64_t group_jobs_unknown; uint64_t group_slots_running; uint64_t stats_max_sumrss; uint64_t stats_max_maxrss; struct timeval stats_max_utime; struct timeval stats_max_stime; struct timeval stats_max_real; uint64_t stats_wait_sec; uint64_t stats_run_sec; uint64_t stats_idle_sec; }; #define MXQ_GROUP_STATUS_OK 0 #define MXQ_GROUP_STATUS_CANCELLED 99 #define MXQ_GROUP_FLAG_CLOSED (1<<0) void mxq_group_free_content(struct mxq_group *g); uint64_t mxq_group_jobs_active(struct mxq_group *g); uint64_t mxq_group_jobs_inq(struct mxq_group *g); int mxq_load_group(struct mx_mysql *mysql, struct mxq_group **mxq_groups, uint64_t group_id); int mxq_load_all_groups(struct mx_mysql *mysql, struct mxq_group **mxq_groups); int mxq_load_all_groups_for_user(struct mx_mysql *mysql, struct mxq_group **mxq_groups, uint64_t user_uid); int mxq_load_active_groups_for_user(struct mx_mysql *mysql, struct mxq_group **mxq_groups, uint64_t user_uid); int mxq_load_running_groups(struct mx_mysql *mysql, struct mxq_group **mxq_groups); int mxq_load_running_groups_for_user(struct mx_mysql *mysql, struct mxq_group **mxq_groups, uint64_t user_uid); #endif