BeRTOS
|
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 }