Add kernel + core drivers flash size benchmark.
[bertos.git] / examples / benchmark / kernel-core_avr / main.c
diff --git a/examples/benchmark/kernel-core_avr/main.c b/examples/benchmark/kernel-core_avr/main.c
new file mode 100644 (file)
index 0000000..190c338
--- /dev/null
@@ -0,0 +1,58 @@
+// Emtpy main.c file generated by the wizard
+#include <cpu/irq.h>
+#include <kern/proc.h>
+#include <kern/signal.h>
+#include <kern/msg.h>
+#include <drv/ser.h>
+#include <drv/timer.h>
+
+MsgPort in_port;
+Serial ser;
+Timer t;
+
+static void init(void)
+{
+       IRQ_ENABLE;
+       proc_init();
+       timer_init();
+       ser_init(&ser, SER_UART0);
+}
+
+static cpu_stack_t proc1_stack[500];
+
+static void proc1_main(void)
+{
+       msg_peek(&in_port);
+       Msg *msg = msg_get(&in_port);
+       msg_reply(msg);
+       sig_wait(SIG_USER0);
+}
+
+int main(void)
+{
+       init();
+       struct Process *p = proc_new(proc1_main, 0, sizeof(proc1_stack), proc1_stack);
+       msg_initPort(&in_port, event_createSignal(p, SIG_USER1));
+       Msg msg;
+       msg_put(&in_port, &msg);
+       proc_setPri(p, 5);
+       // generate timer code
+       timer_clock();
+       timer_delay(ms_to_ticks(500));
+       timer_setDelay(&t, ms_to_ticks(500));
+       timer_add(&t);
+       timer_abort(&t);
+       // generate ser code
+       char buf[10];
+       kfile_write(&ser.fd, buf, sizeof(buf));
+       kfile_read(&ser.fd, buf, sizeof(buf));
+       
+       while (1)
+       {
+               sig_signal(p, SIG_USER0);
+               proc_yield();
+       }
+
+       return 0;
+}
+