00001 00007 #ifndef __QOS_L_OTHER_H__ 00008 #define __QOS_L_OTHER_H__ 00009 00010 #include <linux/types.h> 00011 00029 #ifndef __KERNEL__ 00030 #define l_shl_div(num, SHF, den) ((__s32) ((((__s64) ((__s32)(num))) << (SHF)) / ((__s32)(den)))) 00031 #else 00032 #define l_shl_div(num, SHF, den) ({ \ 00033 __s64 result = ((__s64)(num)) << (SHF); \ 00034 do_div(result, (den)); \ 00035 result; \ 00036 }) 00037 #endif 00038 00054 #ifndef __KERNEL__ 00055 #define l_mul_div(x, num, den) ((__s32) (((__s64) ((__s32)(x))) * ((__s32)(num)) / ((__s32)(den)))) 00056 #else 00057 #define l_mul_div(x, num, den) ({ \ 00058 __s64 result = ((__s64)(x)) * (num); \ 00059 do_div(result, (den)); \ 00060 result; \ 00061 }) 00062 #endif 00063 00083 #define l_mul_shr(x, y, SHF) ((__s32) ((((__s64) ((__s32)(x))) * ((__s32)(y))) >> (SHF))) 00084 00085 #endif