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