00001 
00059 #ifndef _RTTESTING_H
00060 #define _RTTESTING_H
00061 
00062 #include <rtdm/rtdm.h>
00063 
00064 #define RTTST_PROFILE_VER               1
00065 
00066 typedef struct rttst_bench_res {
00067         long long avg;
00068         long min;
00069         long max;
00070         long overruns;
00071         long test_loops;
00072 } rttst_bench_res_t;
00073 
00074 typedef struct rttst_interm_bench_res {
00075         struct rttst_bench_res last;
00076         struct rttst_bench_res overall;
00077 } rttst_interm_bench_res_t;
00078 
00079 typedef struct rttst_overall_bench_res {
00080         struct rttst_bench_res result;
00081         long *histogram_avg;
00082         long *histogram_min;
00083         long *histogram_max;
00084         void *__padding;        
00085 } rttst_overall_bench_res_t;
00086 
00087 #define RTTST_TMBENCH_INVALID           -1 
00088 #define RTTST_TMBENCH_TASK              0
00089 #define RTTST_TMBENCH_HANDLER           1
00090 
00091 typedef struct rttst_tmbench_config {
00092         int mode;
00093         int priority;
00094         nanosecs_rel_t period;
00095         int warmup_loops;
00096         int histogram_size;
00097         int histogram_bucketsize;
00098         int freeze_max;
00099 } rttst_tmbench_config_t;
00100 
00101 #define RTTST_IRQBENCH_USER_TASK        0
00102 #define RTTST_IRQBENCH_KERNEL_TASK      1
00103 #define RTTST_IRQBENCH_HANDLER          2
00104 #define RTTST_IRQBENCH_HARD_IRQ         3
00105 
00106 #define RTTST_IRQBENCH_SERPORT          0
00107 #define RTTST_IRQBENCH_PARPORT          1
00108 
00109 typedef struct rttst_irqbench_config {
00110         int mode;
00111         int priority;
00112         int calibration_loops;
00113         unsigned int port_type;
00114         unsigned long port_ioaddr;
00115         unsigned int port_irq;
00116 } rttst_irqbench_config_t;
00117 
00118 typedef struct rttst_irqbench_stats {
00119         unsigned long long irqs_received;
00120         unsigned long long irqs_acknowledged;
00121 } rttst_irqbench_stats_t;
00122 
00123 struct rttst_swtest_task {
00124         unsigned index;
00125         unsigned flags;
00126 };
00127 
00128 
00129 #define RTTST_SWTEST_FPU                0x1
00130 #define RTTST_SWTEST_USE_FPU            0x2 
00131 #define RTTST_SWTEST_FREEZE             0x4 
00132 
00133 struct rttst_swtest_dir {
00134         unsigned from;
00135         unsigned to;
00136 };
00137 
00138 struct rttst_swtest_error {
00139         struct rttst_swtest_dir last_switch;
00140         unsigned fp_val;
00141 };
00142 
00143 #define RTIOC_TYPE_TESTING              RTDM_CLASS_TESTING
00144 
00148 #define RTDM_SUBCLASS_TIMERBENCH        0
00149 #define RTDM_SUBCLASS_IRQBENCH          1
00150 #define RTDM_SUBCLASS_SWITCHTEST        2
00151 
00157 #define RTTST_RTIOC_INTERM_BENCH_RES \
00158         _IOWR(RTIOC_TYPE_TESTING, 0x00, struct rttst_interm_bench_res)
00159 
00160 #define RTTST_RTIOC_TMBENCH_START \
00161         _IOW(RTIOC_TYPE_TESTING, 0x10, struct rttst_tmbench_config)
00162 
00163 #define RTTST_RTIOC_TMBENCH_STOP \
00164         _IOWR(RTIOC_TYPE_TESTING, 0x11, struct rttst_overall_bench_res)
00165 
00166 #define RTTST_RTIOC_IRQBENCH_START \
00167         _IOW(RTIOC_TYPE_TESTING, 0x20, struct rttst_irqbench_config)
00168 
00169 #define RTTST_RTIOC_IRQBENCH_STOP \
00170         _IO(RTIOC_TYPE_TESTING, 0x21)
00171 
00172 #define RTTST_RTIOC_IRQBENCH_GET_STATS \
00173         _IOR(RTIOC_TYPE_TESTING, 0x22, struct rttst_irqbench_stats)
00174 
00175 #define RTTST_RTIOC_IRQBENCH_WAIT_IRQ \
00176         _IO(RTIOC_TYPE_TESTING, 0x23)
00177 
00178 #define RTTST_RTIOC_IRQBENCH_REPLY_IRQ \
00179         _IO(RTIOC_TYPE_TESTING, 0x24)
00180 
00181 #define RTTST_RTIOC_SWTEST_SET_TASKS_COUNT \
00182         _IOW(RTIOC_TYPE_TESTING, 0x30, unsigned long)
00183 
00184 #define RTTST_RTIOC_SWTEST_SET_CPU \
00185         _IOW(RTIOC_TYPE_TESTING, 0x31, unsigned long)
00186 
00187 #define RTTST_RTIOC_SWTEST_REGISTER_UTASK \
00188         _IOW(RTIOC_TYPE_TESTING, 0x32, struct rttst_swtest_task)
00189 
00190 #define RTTST_RTIOC_SWTEST_CREATE_KTASK \
00191         _IOWR(RTIOC_TYPE_TESTING, 0x33, struct rttst_swtest_task)
00192 
00193 #define RTTST_RTIOC_SWTEST_PEND \
00194         _IOR(RTIOC_TYPE_TESTING, 0x34, struct rttst_swtest_task)
00195 
00196 #define RTTST_RTIOC_SWTEST_SWITCH_TO \
00197         _IOR(RTIOC_TYPE_TESTING, 0x35, struct rttst_swtest_dir)
00198 
00199 #define RTTST_RTIOC_SWTEST_GET_SWITCHES_COUNT \
00200         _IOR(RTIOC_TYPE_TESTING, 0x36, unsigned long)
00201 
00202 #define RTTST_RTIOC_SWTEST_GET_LAST_ERROR \
00203         _IOR(RTIOC_TYPE_TESTING, 0x37, struct rttst_swtest_error)
00204 
00205 #define RTTST_RTIOC_SWTEST_SET_PAUSE \
00206         _IOW(RTIOC_TYPE_TESTING, 0x38, unsigned long)
00207 
00211 #endif