Hi!
> +#define RUSAGE_THREAD 1
Shouldn't this be set in system headers?
And even if not, it probably would be on newer systems so better way
should be:
#ifndef RUSAGE_THREAD
#define RUSAGE_THREAD 1
#endif
> +static void busyloop(int wait);
> +static void setup(void);
> +static void cleanup(void);
> +
> +int main(int argc, char *argv[])
> +{
> + struct rusage usage;
> + unsigned long ulast, udelta, slast, sdelta;
> + int i, lc;
> + char *msg;
> +
> + msg = parse_opts(argc, argv, NULL, NULL);
> + if (msg != NULL)
> + tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg);
> +
> + setup();
> +
> + for (lc = 0; TEST_LOOPING(lc); lc++) {
> + Tst_count = 0; i = 0;
> + ulast = 0, slast = 0;
> + SAFE_GETRUSAGE(cleanup, RUSAGE_THREAD, &usage);
> + tst_resm(TINFO, "utime:%12luus; stime:%12luus",
> + usage.ru_utime.tv_usec, usage.ru_stime.tv_usec);
> + while (i < RECORD_MAX) {
> + SAFE_GETRUSAGE(cleanup, RUSAGE_THREAD, &usage);
> + udelta = usage.ru_utime.tv_usec - ulast;
> + sdelta = usage.ru_stime.tv_usec - slast;
> + if (udelta > 0 || sdelta > 0) {
> + i++;
> + tst_resm(TINFO, "utime:%12luus; stime:%12luus",
> + usage.ru_utime.tv_usec,
> + usage.ru_stime.tv_usec);
> + if (udelta > 1000+BIAS_MAX)
> + tst_brkm(TFAIL, cleanup,
> + "utime increased > 1000us:"
> + " delta = %luus", udelta);
> + if (sdelta > 1000+BIAS_MAX)
> + tst_brkm(TFAIL, cleanup,
> + "stime increased > 1000us:"
> + " delta = %luus", sdelta);
> + }
> + ulast = usage.ru_utime.tv_usec;
> + slast = usage.ru_stime.tv_usec;
Hmm, you are actually looping the test for RECORD_MAX and then the whole
test in test loop. Is there really need for that redundancy? Shouldn't
be running the test with -i 20 sufficient?
> + busyloop(100000);
> + }
> + }
> + cleanup();
> + tst_exit();
> +}
> +
> +static void busyloop(int wait)
> +{
> + int i, j = 0;
> +
> + for (i = 0; i < wait; i++)
> + j = j * 3 + 11;
The j = j * 3 + 11 line would likely by removed by compiler
optimalization.
Also if you wan't to create bussy loop that loops for some microseconds
you can use posix timers for that. Something like:
void sighandler(int sig)
{
signal_flag = 0;
}
void bussy_loop(void)
{
while (signal_flag);
}
...
timer_create()
...
signal_flag = 1;
timer_settime();
bussy_loop();
--
Cyril Hrubis
[email protected]
------------------------------------------------------------------------------
Got Input? Slashdot Needs You.
Take our quick survey online. Come on, we don't ask for help often.
Plus, you'll get a chance to win $100 to spend on ThinkGeek.
http://p.sf.net/sfu/slashdot-survey
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list