Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #include "local.h"
00040
00041 #include <assert.h>
00042 #include <stdio.h>
00043 #include <stdlib.h>
00044
00045 #include <errno.h>
00046 #include <fcntl.h>
00047 #include <sys/ioctl.h>
00048 #include <sys/mman.h>
00049 #include <sys/stat.h>
00050 #include <sys/time.h>
00051 #include <sys/types.h>
00052 #include <stdio.h>
00053 #include <unistd.h>
00054
00055 #include <popt.h>
00056
00057 #include "acq32ioctl.h"
00058 #include "acq32busprot.h"
00059
00060 #include "llif.h"
00061 #include "llprotocol.h"
00062
00063
00064 #include "llcontrol.h"
00065 #include "x86timer.h"
00066
00067 #define FLAVOR "ACQ196"
00068 #include "llcontrol-core.h"
00069
00070
00071 static void sync_2v_updateTstats(
00072 u32 cmd, struct Card* card, struct TimingStats* tstats)
00073
00074 {
00075 #define SAMPLE_SIZE (96*2)
00076 u32* stats = getVaddr(card->buf, card->sync_2v_offset_status_hsbt);
00077 tstats->tinst = llv2_extend32(stats[LLC_SYNC2V_IN_MBOX2],
00078 stats[LLC_SYNC2V_IN_TINST]);
00079 tstats->tprocess = LLC_GET_TCYCLE(stats[LLC_SYNC2V_IN_MBOX0]);
00080 }
00081
00082 static u32 card_sync_2v_WaitDmaDone(struct Card* card)
00083 {
00084 return card->tlatch = llv2WaitDmaDone_2v(card->mbx,
00085 getVaddr(card->buf, card->sync_2v_offset_status_hsbt),
00086 card->tlatch
00087 );
00088 }
00089
00090 void appEnterLLC_SYNC_2VRFM(void)
00091
00092
00093
00094
00095 {
00096
00097 }
00098
00099 int runSYNC_2VRFM(struct TestDescription *td, int soft_clock)
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128 {
00129 struct TimingStats tstats[1] = {};
00130 #define icard 0
00131 u32 cmd = LLC_MAKE_DECIM(td->decimation);
00132
00133 INIT_TIMER;
00134
00135
00136 for ( td->iter = 0; td->iter != td->iterations; ++td->iter ){
00137
00138 MARK_TIME(1, "waitDmaDone() before");
00139 tstats[icard].tlatch = waitDmaDone(EACHCARD(td));
00140 MARK_TIME(2, "waitDmaDone() after");
00141
00142 if (!td->min_latency_test) {
00143 updateTstats(cmd, EACHCARD(td), &tstats[icard]);
00144 }
00145
00146
00147 if (td->do_work){
00148 doApplicationWork(td, 0);
00149 }
00150
00151
00152 MARK_TIME(9, "after llCounterRunning check");
00153
00154 if (td->tlog){
00155 tstats[icard].target_poll =
00156 getMboxPollcount(EACHMBX(td));
00157 MARK_TIME(10, "10");
00158 updateTimingStats(
00159 td->stats_buf[icard],
00160 td->iter,
00161 &tstats[icard]);
00162 }
00163 TIMER_CHECK_OVERFLOW;
00164 }
00165
00166 G_quit = 1;
00167 return 0;
00168 }
00169