diff --git a/src/scheduler/include/sched/types.h b/src/scheduler/include/sched/types.h index 959e592b..2b3e6ea7 100644 --- a/src/scheduler/include/sched/types.h +++ b/src/scheduler/include/sched/types.h @@ -8,6 +8,7 @@ #include "kvmgr.h" #include "typemap.h" #include "xce/types.h" +#include "zarray.h" typedef void* host_selection_t; @@ -54,10 +55,10 @@ typedef struct { } xce_sched_job_t; typedef struct { - char* name; - uint32_t status; - xce_val_t* res_avail; /* resources in worker */ - xce_val_t* res_in_use; /* used resources in worker */ + char* name; + uint32_t status; + zarray_t resvals; + zarray_t resInUse; } xce_sched_worker_t; extern xce_sched_job_t* make_sched_job(void*, xce_job_t*); @@ -70,4 +71,5 @@ extern void kill_sched_queue(void*); extern void kill_sched_worker(void*); extern void kill_sched_user(void*); extern void kill_sched_project(void*); +extern void kill_sched_resval(xce_val_t*); #endif diff --git a/src/scheduler/include/scheduler.h b/src/scheduler/include/scheduler.h index f386594e..560b554e 100644 --- a/src/scheduler/include/scheduler.h +++ b/src/scheduler/include/scheduler.h @@ -56,6 +56,7 @@ typedef struct { kvmgr_t plugins; dataq_t* pend_updates[2]; resmgr_t resmgr; + zarray_t sharedInst; kvmgr_t jobs; kvmgr_t queues; kvmgr_t workers; diff --git a/src/scheduler/src/schedobj.c b/src/scheduler/src/schedobj.c index ae1c3a87..cdc8eeff 100644 --- a/src/scheduler/src/schedobj.c +++ b/src/scheduler/src/schedobj.c @@ -2,6 +2,7 @@ #include #include +#include "controller.capnp.h" #include "sched/types.h" #include "scheduler.h" #include "xce/types.h" @@ -75,6 +76,15 @@ void kill_sched_worker(void* arg) } } +void kill_sched_resval(xce_val_t* val) +{ + if (val == NULL) { + return; + } + + free_Value(val); +} + xce_sched_worker_t* make_sched_worker(void* arg, xce_worker_t* w) { xce_scheduler_t* sched = (xce_scheduler_t*)arg; @@ -91,6 +101,9 @@ xce_sched_worker_t* make_sched_worker(void* arg, xce_worker_t* w) worker->name = strdup(w->name); worker->status = w->status; + + zarray_init(&(worker->resvals), 128, (zarray_item_killer_t)kill_sched_resval); + zarray_init(&(worker->resInUse), 128, (zarray_item_killer_t)kill_sched_resval); /* FIXME: */ return worker; @@ -125,4 +138,3 @@ xce_sched_project_t* make_sched_project(void* arg, char* name) return project; } - diff --git a/src/scheduler/src/scheduler.c b/src/scheduler/src/scheduler.c index 3a3f227b..8d6f4c4a 100644 --- a/src/scheduler/src/scheduler.c +++ b/src/scheduler/src/scheduler.c @@ -183,6 +183,9 @@ int sched_init(xce_scheduler_t* sched, xce_client_config_t* config, kvmgr_init(&(sched->projects), string_hash_key, 8, 8, (zarray_item_killer_t)kill_sched_project); + zarray_init(&(sched->sharedInst), 128, + (zarray_item_killer_t)kill_sched_resval); + sched_register_plugins(sched); rc = xcecli_ctx_init(&(sched->apictx), config);