37 lines
641 B
C
37 lines
641 B
C
#include <rt/cycle.h>
|
|
#include <rt/log.h>
|
|
#include <rt/queue.h>
|
|
#include <rt/task.h>
|
|
#include <rt/trap.h>
|
|
|
|
#define N 100
|
|
|
|
static volatile uint32_t start_cycle = 0;
|
|
static volatile uint32_t cycles[N];
|
|
|
|
RT_QUEUE_STATIC(queue, int, 10);
|
|
|
|
static void pusher(void)
|
|
{
|
|
int x = 0;
|
|
for (int i = 0; i < N; ++i)
|
|
{
|
|
start_cycle = rt_cycle();
|
|
rt_queue_push(&queue, &x);
|
|
}
|
|
}
|
|
|
|
static void popper(void)
|
|
{
|
|
int x;
|
|
for (int i = 0; i < N; ++i)
|
|
{
|
|
rt_queue_pop(&queue, &x);
|
|
cycles[i] = rt_cycle() - start_cycle;
|
|
}
|
|
rt_trap();
|
|
}
|
|
|
|
RT_TASK(popper, RT_STACK_MIN, 0);
|
|
RT_TASK(pusher, RT_STACK_MIN, 1);
|