From f8b91247c32a83e8c0ae0f5f3b76fe9911865829 Mon Sep 17 00:00:00 2001 From: Petr Benes Date: Thu, 28 Apr 2011 00:17:51 +0200 Subject: [PATCH] CBS API added. The file reps_lib.h contains the scheduler API. --- src/edf/Makefile.omk | 4 +-- src/edf/reps_lib.c | 55 +++++++++++++++++++++++++++++++++++++ src/edf/reps_lib.h | 65 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 src/edf/reps_lib.c create mode 100644 src/edf/reps_lib.h diff --git a/src/edf/Makefile.omk b/src/edf/Makefile.omk index a1ae978..11b38be 100644 --- a/src/edf/Makefile.omk +++ b/src/edf/Makefile.omk @@ -3,9 +3,9 @@ lib_LIBRARIES = edf -include_HEADERS = scheduler_edf.h edf_types.h rbtree.h +include_HEADERS = scheduler_edf.h edf_types.h rbtree.h reps_lib.h -edf_SOURCES += scheduler_edf.c rbtree.c +edf_SOURCES += scheduler_edf.c rbtree.c reps_lib.c #appfoo_EMBEDTARFILES = rootfs diff --git a/src/edf/reps_lib.c b/src/edf/reps_lib.c new file mode 100644 index 0000000..dcc5506 --- /dev/null +++ b/src/edf/reps_lib.c @@ -0,0 +1,55 @@ +#include "reps_lib.h" + + +reps_rv reps_create_server(reps_params_t *p_params, reps_sid_t *p_sid) { + return REPS_E_NOT_IMPLEMENTED; +} + +reps_rv reps_destroy_server(reps_sid_t sid){ + return REPS_E_NOT_IMPLEMENTED; +} + +reps_rv reps_set_params(reps_sid_t sid, reps_params_t *p_params){ + return REPS_E_NOT_IMPLEMENTED; +} + +reps_rv reps_attach_thread(reps_sid_t server_id, tid_t tid){ + return REPS_E_NOT_IMPLEMENTED; +} + +reps_rv reps_get_sid(tid_t tid, reps_sid_t *p_sid){ + return REPS_E_NOT_IMPLEMENTED; +} + +reps_rv reps_detach_thread(reps_sid_t sid, tid_t tid){ + return REPS_E_NOT_IMPLEMENTED; +} + +reps_rv reps_get_exec_time (reps_sid_t sid, reps_time_t *exec_time){ + return REPS_E_NOT_IMPLEMENTED; +} + +reps_rv reps_get_params(reps_sid_t sid, reps_params_t *p_params){ + return REPS_E_NOT_IMPLEMENTED; +} + +reps_rv reps_get_curr_budget(reps_sid_t sid, reps_time_t *curr_budget){ + return REPS_E_NOT_IMPLEMENTED; +} + +reps_rv reps_reserve_spare(reps_params_t *p_params){ + return REPS_E_NOT_IMPLEMENTED; +} + +reps_rv reps_get_appr_budget (reps_sid_t sid, reps_time_t *appr_budget){ + return REPS_E_NOT_IMPLEMENTED; +} + +reps_rv reps_init(void){ + return REPS_OK; +} + +reps_rv reps_cleanup(void){ + return REPS_OK; +} + diff --git a/src/edf/reps_lib.h b/src/edf/reps_lib.h new file mode 100644 index 0000000..a3a2991 --- /dev/null +++ b/src/edf/reps_lib.h @@ -0,0 +1,65 @@ +#ifndef _REPS_LIB_H +#define _REPS_LIB_H + +#include "edf_types.h" +#include "rbtree.h" + + +#define REPS_OK 0 +#define REPS_E_MISSING_COMPONENT 1 +#define REPS_E_NOT_IMPLEMENTED 2 + +/// server id +typedef uint32_t reps_sid_t; + +/// return value +typedef int reps_rv; + +typedef long reps_time_t; + +typedef struct { + long long P; + long long Q; +} reps_params_t; + +typedef rtems_id tid_t; + + +/// creates a server == allocates an empty bandwidth in the scheduler +reps_rv reps_create_server(reps_params_t *p_params, reps_sid_t *p_sid); + +reps_rv reps_destroy_server(reps_sid_t sid); + +/// set budget and period (e.g. when changing a resource) +reps_rv reps_set_params(reps_sid_t sid, reps_params_t *p_params); + +/// when binding a thread +reps_rv reps_attach_thread(reps_sid_t server_id, tid_t tid); + +/// server id dedicated to a thread +reps_rv reps_get_sid(tid_t tid, reps_sid_t *p_sid); + +/// remove thread from server +reps_rv reps_detach_thread(reps_sid_t sid, tid_t tid); + +/// cpu usage relative to the current server +reps_rv reps_get_exec_time (reps_sid_t sid, reps_time_t *exec_time); + +/// get params of a server (budget and period) +reps_rv reps_get_params(reps_sid_t sid, reps_params_t *p_params); + +/// remaining budget for the current server instance +reps_rv reps_get_curr_budget(reps_sid_t sid, reps_time_t *curr_budget); + +/// set the spare bandwidth ?? +reps_rv reps_reserve_spare(reps_params_t *p_params); + +/// get approved budget for subsequent server instances +reps_rv reps_get_appr_budget (reps_sid_t sid, reps_time_t *appr_budget); + +reps_rv reps_init(void); + +reps_rv reps_cleanup(void); + + +#endif /*_REPS_LIB_H*/ \ No newline at end of file -- 2.39.2