00001 #ifndef __QSUP_H__
00002 #define __QSUP_H__
00003
00022 #include "qsup_gw.h"
00023 #include "qres_gw.h"
00024 #include <linux/aquosa/qos_debug.h>
00025 #include <linux/aquosa/qos_types.h>
00026
00028 typedef struct qsup_level_rule_t {
00029 int level;
00030 qos_bw_t max_bw;
00031 struct qsup_level_rule_t *next;
00032 } qsup_level_rule_t;
00033
00035 typedef struct qsup_group_rule_t {
00036 int gid;
00037 qsup_constraints_t constr;
00038 struct qsup_group_rule_t *next;
00039 } qsup_group_rule_t;
00040
00042 typedef struct qsup_user_rule_t {
00043 int uid;
00044 qsup_constraints_t constr;
00045 struct qsup_user_rule_t *next;
00046 } qsup_user_rule_t;
00047
00049 typedef struct qsup_server_t {
00050
00051 int server_id;
00052 int level;
00053 int weight;
00054 qos_bw_t gua_bw;
00055 qos_bw_t max_user_bw;
00056 qos_bw_t max_level_bw;
00057 int uid, gid;
00059
00060 qos_bw_t req_bw;
00061 qos_bw_t used_gua_bw;
00062 qos_bw_t *p_level_sum;
00063 qos_bw_t *p_user_req;
00064 qos_bw_t *p_level_req;
00065 long int *p_user_coeff;
00066 long int *p_level_coeff;
00067 qos_bw_t *p_user_gua;
00068 qos_bw_t *p_level_gua;
00069 struct qsup_server_t *next;
00070 } qsup_server_t;
00071
00073 qos_rv qsup_init(void);
00074
00076 qos_rv qsup_cleanup(void);
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00091 qos_rv qsup_add_level_rule(int level, qos_bw_t max_bw);
00092
00094 qos_rv qsup_add_group_constraints(int gid, qsup_constraints_t *constr);
00095
00097 qos_rv qsup_add_user_constraints(int uid, qsup_constraints_t *constr);
00098
00104 qos_rv qsup_create_server(qsup_server_t **p_srv, int uid, int gid, qres_params_t *param);
00105
00106 qos_rv qsup_init_server(qsup_server_t *srv, int uid, int gid, qres_params_t *param);
00107
00109 qos_rv qsup_destroy_server(qsup_server_t *srv);
00110
00111 qos_rv qsup_cleanup_server(qsup_server_t *srv);
00112
00114 qos_rv qsup_set_required_bw(qsup_server_t *srv, qos_bw_t server_req);
00115
00117 qos_bw_t qsup_get_required_bw(qsup_server_t *srv);
00118
00120 qos_bw_t qsup_get_guaranteed_bw(qsup_server_t *srv);
00121
00123 qos_bw_t qsup_get_approved_bw(qsup_server_t *srv);
00124
00126 qos_bw_t qsup_get_max_gua_bw(int uid, int gid);
00127
00129 qos_rv qsup_get_avail_gua_bw(int uid, int gid, qos_bw_t *p_avail_bw);
00130
00132 qos_rv qsup_get_avail_bw(int uid, int gid, qos_bw_t *p_avail_bw);
00133
00135 void qsup_dump(void);
00136
00138 qsup_constraints_t *qsup_find_constr(int uid, int gid);
00139
00141 qos_rv qsup_reserve_spare(qos_bw_t spare_bw);
00142
00145 #endif