00001 #ifndef __QMGR_GW_LIB_H__
00002 #define __QMGR_GW_LIB_H__
00003
00021 #include <linux/aquosa/qmgr_gw.h>
00022
00023 #include <sys/ioctl.h>
00024 #include <errno.h>
00025
00026 #define IOCTL_OP_START _IOR(QMGR_MAJOR_NUM, QMGR_OP_START, qmgr_params_t)
00027 #define IOCTL_OP_STOP _IO(QMGR_MAJOR_NUM, QMGR_OP_STOP)
00028 #define IOCTL_OP_PAUSE _IO(QMGR_MAJOR_NUM, QMGR_OP_PAUSE)
00029 #define IOCTL_OP_CONTINUE _IO(QMGR_MAJOR_NUM, QMGR_OP_CONTINUE)
00030 #define IOCTL_OP_SYNC _IO(QMGR_MAJOR_NUM, QMGR_OP_SYNC)
00031 #define IOCTL_OP_END_CYCLE _IOW(QMGR_MAJOR_NUM, QMGR_OP_END_CYCLE, qres_time_t)
00032 #define IOCTL_OP_END_CYCLE_SKIP _IOW(QMGR_MAJOR_NUM, QMGR_OP_END_CYCLE_SKIP, qres_time_t)
00033 #define IOCTL_OP_GET_EXEC_TIME _IOW(QMGR_MAJOR_NUM, QMGR_OP_GET_EXEC_TIME, qres_time_t)
00034 #define IOCTL_OP_GET_SCHED_ERR _IOW(QMGR_MAJOR_NUM, QMGR_OP_GET_SCHED_ERR, qres_time_t)
00035
00037 extern int qmgr_fd;
00038
00043 static inline qos_rv qmgr_start_gw(qmgr_params_t *params) {
00044 qos_log_debug("min_bw=%lu, max_bw=%lu, P=" QRES_TIME_FMT,
00045 params->ctrl_params.base.min_bandwidth,
00046 params->ctrl_params.base.max_bandwidth,
00047 params->ctrl_params.base.server_period);
00048 if (ioctl(qmgr_fd, IOCTL_OP_START, params) < 0) {
00049 qos_log_err("ioctl() failed: %s", qos_strerror(qos_int_rv(-errno)));
00050 return qos_int_rv(-errno);
00051 }
00052 return QOS_OK;
00053 }
00054
00055 static inline qos_rv qmgr_stop_gw() {
00056 if (ioctl(qmgr_fd, IOCTL_OP_STOP) < 0) {
00057 qos_log_err("ioctl() failed: %s", qos_strerror(qos_int_rv(-errno)));
00058 return qos_int_rv(-errno);
00059 }
00060 return QOS_OK;
00061 }
00062
00063 static inline qos_rv qmgr_end_cycle_gw(qres_time_t *p_sched_error) {
00064 if (ioctl(qmgr_fd, IOCTL_OP_END_CYCLE, p_sched_error) < 0) {
00065 qos_log_err("ioctl() failed: %s", qos_strerror(qos_int_rv(-errno)));
00066 return qos_int_rv(-errno);
00067 }
00068 return QOS_OK;
00069 }
00070
00071 static inline qos_rv qmgr_end_cycle_skip_gw(qres_time_t *p_sched_error) {
00072 if (ioctl(qmgr_fd, IOCTL_OP_END_CYCLE_SKIP, p_sched_error) < 0) {
00073 qos_log_err("ioctl() failed: %s", qos_strerror(qos_int_rv(-errno)));
00074 return qos_int_rv(-errno);
00075 }
00076 return QOS_OK;
00077 }
00078
00079 static inline qos_rv qmgr_pause_gw() {
00080 if (ioctl(qmgr_fd, IOCTL_OP_PAUSE) < 0) {
00081 qos_log_err("ioctl() failed: %s", qos_strerror(qos_int_rv(-errno)));
00082 return qos_int_rv(-errno);
00083 }
00084 return QOS_OK;
00085 }
00086
00087 static inline qos_rv qmgr_continue_gw() {
00088 if (ioctl(qmgr_fd, IOCTL_OP_CONTINUE) < 0) {
00089 qos_log_err("ioctl() failed: %s", qos_strerror(qos_int_rv(-errno)));
00090 return qos_int_rv(-errno);
00091 }
00092 return QOS_OK;
00093 }
00094
00095 static inline qos_rv qmgr_sync_gw() {
00096 if (ioctl(qmgr_fd, IOCTL_OP_SYNC) < 0) {
00097 qos_log_err("ioctl() failed: %s", qos_strerror(qos_int_rv(-errno)));
00098 return qos_int_rv(-errno);
00099 }
00100 return QOS_OK;
00101 }
00102
00103 static inline qos_rv qmgr_get_exec_time_gw(qres_time_t *exec_time) {
00104 if (ioctl(qmgr_fd, IOCTL_OP_GET_EXEC_TIME, exec_time) < 0) {
00105 qos_log_err("ioctl() failed: %s", qos_strerror(qos_int_rv(-errno)));
00106 return qos_int_rv(-errno);
00107 }
00108 return QOS_OK;
00109 }
00110
00111 #endif