BeRTOS
kernel_footprint.c
Go to the documentation of this file.
00001 
00040 #include "kernel_footprint.h"
00041 
00042 #include <cpu/irq.h>
00043 
00044 #include <kern/proc.h>
00045 #include <kern/signal.h>
00046 #include <kern/msg.h>
00047 #include <kern/sem.h>
00048 
00049 MsgPort in_port;
00050 
00051 static void init(void)
00052 {
00053     IRQ_ENABLE;
00054     proc_init();
00055 }
00056 
00057 static PROC_DEFINE_STACK(proc1_stack, KERN_MINSTACKSIZE);
00058 
00059 static NORETURN void proc1_main(void)
00060 {
00061     int i;
00062     for(;;)
00063     {
00064         i++;
00065     }
00066 }
00067 
00068 void kernel_footprint(void)
00069 {
00070     init();
00071 
00072     // generate code for process
00073     struct Process *p =
00074         proc_new(proc1_main, 0, sizeof(proc1_stack), proc1_stack);
00075     proc_setPri(p, 5);
00076     proc_yield();
00077 
00078     // generate code for msg
00079     Msg msg;
00080     msg_initPort(&in_port, event_createSignal(p, SIG_USER1));
00081     msg_put(&in_port, &msg);
00082     msg_peek(&in_port);
00083     Msg *msg_re = msg_get(&in_port);
00084     msg_reply(msg_re);
00085 
00086     // generate code for signals
00087     sig_send(p, SIG_USER0);
00088 
00089     // generate code for msg
00090     Semaphore sem;
00091     sem_init(&sem);
00092     sem_obtain(&sem);
00093     sem_release(&sem);
00094 
00095     sig_wait(SIG_USER0);
00096 }