00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <errno.h>
00019
00020 #include "vserver.h"
00021
00022 #include "linux/vserver/switch.h"
00023 #include "linux/vserver/sched_cmd.h"
00024
00025 int vx_sched_get(xid_t xid, vx_sched_t *data)
00026 {
00027 struct vcmd_sched_v5 kdata;
00028
00029 if (!data)
00030 return errno = EINVAL, -1;
00031
00032 kdata.cpu_id = data->cpu_id;
00033 kdata.bucket_id = data->bucket_id;
00034 kdata.mask = data->mask;
00035
00036 int rc = vserver(VCMD_get_sched, xid, &kdata);
00037
00038 if (rc == -1)
00039 return -1;
00040
00041 data->fill_rate[0] = kdata.fill_rate[0];
00042 data->fill_rate[1] = kdata.fill_rate[1];
00043 data->interval[0] = kdata.interval[0];
00044 data->interval[1] = kdata.interval[1];
00045 data->tokens = kdata.tokens;
00046 data->tokens_min = kdata.tokens_min;
00047 data->tokens_max = kdata.tokens_max;
00048 data->prio_bias = kdata.prio_bias;
00049
00050 return rc;
00051 }
00052
00053 int vx_sched_set(xid_t xid, vx_sched_t *data)
00054 {
00055 struct vcmd_sched_v5 kdata;
00056
00057 if (!data)
00058 return errno = EINVAL, -1;
00059
00060 kdata.mask = data->mask;
00061 kdata.cpu_id = data->cpu_id;
00062 kdata.fill_rate[0] = data->fill_rate[0];
00063 kdata.fill_rate[1] = data->fill_rate[1];
00064 kdata.interval[0] = data->interval[0];
00065 kdata.interval[1] = data->interval[1];
00066 kdata.tokens = data->tokens;
00067 kdata.tokens_min = data->tokens_min;
00068 kdata.tokens_max = data->tokens_max;
00069 kdata.prio_bias = data->prio_bias;
00070
00071 return vserver(VCMD_set_sched, xid, &kdata);
00072 }
00073
00074 int vx_sched_info(xid_t xid, vx_sched_info_t *data)
00075 {
00076 struct vcmd_sched_info kdata;
00077
00078 if (!data)
00079 return errno = EINVAL, -1;
00080
00081 kdata.cpu_id = data->cpu_id;
00082 kdata.bucket_id = data->bucket_id;
00083
00084 int rc = vserver(VCMD_sched_info, xid, &kdata);
00085
00086 if (rc == -1)
00087 return -1;
00088
00089 data->user_msec = kdata.user_msec;
00090 data->sys_msec = kdata.sys_msec;
00091 data->hold_msec = kdata.hold_msec;
00092 data->token_usec = kdata.token_usec;
00093 data->vavavoom = kdata.vavavoom;
00094
00095 return rc;
00096 }