]> rtime.felk.cvut.cz Git - rtems-pluggable-edf.git/blob - src/edf/reps_lib.h
a3a2991f75feecbb0bbff0a820f85ff90b939c9b
[rtems-pluggable-edf.git] / src / edf / reps_lib.h
1 #ifndef _REPS_LIB_H
2 #define _REPS_LIB_H
3
4 #include "edf_types.h"
5 #include "rbtree.h"
6
7
8 #define REPS_OK                         0
9 #define REPS_E_MISSING_COMPONENT        1
10 #define REPS_E_NOT_IMPLEMENTED          2
11
12 /// server id
13 typedef uint32_t reps_sid_t;
14
15 /// return value
16 typedef int reps_rv;
17
18 typedef long reps_time_t;
19
20 typedef struct {
21         long long P; 
22         long long Q;
23 } reps_params_t;
24
25 typedef rtems_id tid_t;
26
27
28 /// creates a server == allocates an empty bandwidth in the scheduler
29 reps_rv reps_create_server(reps_params_t *p_params, reps_sid_t *p_sid);
30
31 reps_rv reps_destroy_server(reps_sid_t sid);
32
33 /// set budget and period (e.g. when changing a resource)
34 reps_rv reps_set_params(reps_sid_t sid, reps_params_t *p_params);
35
36 /// when binding a thread
37 reps_rv reps_attach_thread(reps_sid_t server_id, tid_t tid);
38
39 /// server id dedicated to a thread
40 reps_rv reps_get_sid(tid_t tid, reps_sid_t *p_sid);
41
42 /// remove thread from server
43 reps_rv reps_detach_thread(reps_sid_t sid, tid_t tid);
44
45 /// cpu usage relative to the current server 
46 reps_rv reps_get_exec_time (reps_sid_t sid, reps_time_t *exec_time);
47
48 /// get params of a server (budget and period)
49 reps_rv reps_get_params(reps_sid_t sid, reps_params_t *p_params);
50
51 /// remaining budget for the current server instance
52 reps_rv reps_get_curr_budget(reps_sid_t sid, reps_time_t *curr_budget);
53
54 /// set the spare bandwidth ??
55 reps_rv reps_reserve_spare(reps_params_t *p_params);
56
57 /// get approved budget for subsequent server instances
58 reps_rv reps_get_appr_budget (reps_sid_t sid, reps_time_t *appr_budget);
59
60 reps_rv reps_init(void);
61
62 reps_rv reps_cleanup(void);
63
64
65 #endif /*_REPS_LIB_H*/