osproject_task.c 686 Bytes
#include <stdio.h>
int main()
{
unsigned int regr;
unsigned int a, b;
unsigned int avg;
asm volatile("mrc p15, 0, %0, c9, c14, 0" : "=r" (regr));
printf("regr: %x\n", regr);
for (regr = 0; regr < 100; regr++) {
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (a));
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (b));
regr += (b - a);
}
regr /= 100;
printf("Measurement overhead: %u\n", regr);
regr = 0;
while (regr < 100) {
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (a));
fork();
asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (b));
printf("Time for fork: %u\n", b - a);
avg += (b - a);
regr++;
}
printf("Fork avg: %u\n", avg);
return 1;
}