/* set_timer latency test * John Stultz (john.stultz@linaro.org) * (C) Copyright Linaro 2014 * Licensed under the GPLv2 * * This test makes sure the set_timer api is correct * * To build: * $ gcc set-timer-lat.c -o set-timer-lat -lrt * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details.
*/
#define UNRESONABLE_LATENCY 40000000 /* 40ms in nanosecs */
#define TIMER_SECS 1 int alarmcount; int clock_id; struct timespec start_time; longlong max_latency_ns; int timer_fired_early;
char *clockstring(int clockid)
{ switch (clockid) { case CLOCK_REALTIME: return"CLOCK_REALTIME"; case CLOCK_MONOTONIC: return"CLOCK_MONOTONIC"; case CLOCK_PROCESS_CPUTIME_ID: return"CLOCK_PROCESS_CPUTIME_ID"; case CLOCK_THREAD_CPUTIME_ID: return"CLOCK_THREAD_CPUTIME_ID"; case CLOCK_MONOTONIC_RAW: return"CLOCK_MONOTONIC_RAW"; case CLOCK_REALTIME_COARSE: return"CLOCK_REALTIME_COARSE"; case CLOCK_MONOTONIC_COARSE: return"CLOCK_MONOTONIC_COARSE"; case CLOCK_BOOTTIME: return"CLOCK_BOOTTIME"; case CLOCK_REALTIME_ALARM: return"CLOCK_REALTIME_ALARM"; case CLOCK_BOOTTIME_ALARM: return"CLOCK_BOOTTIME_ALARM"; case CLOCK_TAI: return"CLOCK_TAI";
} return"UNKNOWN_CLOCKID";
}
longlong timespec_sub(struct timespec a, struct timespec b)
{ longlong ret = NSEC_PER_SEC * b.tv_sec + b.tv_nsec;
ret -= NSEC_PER_SEC * a.tv_sec + a.tv_nsec; return ret;
}
ret |= do_timer(clock_id, TIMER_ABSTIME);
ret |= do_timer(clock_id, 0);
ret |= do_timer_oneshot(clock_id, TIMER_ABSTIME);
ret |= do_timer_oneshot(clock_id, 0);
} if (ret)
ksft_exit_fail();
ksft_exit_pass();
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.24 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.