Boot function that launch everything.
This function load every service according to system requirements (the POK_NEEDS_* maccro).
If we don't use partitioning service, we execute a main function. In that case, POK is acting like an executive, not a real kernel
{
#if defined (POK_NEEDS_TIME) || defined (POK_NEEDS_SCHED) || defined (POK_NEEDS_THREADS)
pok_time_init();
#endif
#ifdef POK_NEEDS_PARTITIONS
pok_partition_init ();
#endif
#ifdef POK_NEEDS_THREADS
pok_thread_init ();
#endif
#if defined (POK_NEEDS_SCHED) || defined (POK_NEEDS_THREADS)
pok_sched_init ();
#endif
#if (defined POK_NEEDS_LOCKOBJ) || defined (POK_NEEDS_PORTS_QUEUEING) || defined (POK_NEEDS_PORTS_SAMPLING)
#endif
#if defined (POK_NEEDS_PORTS_QUEUEING) || defined (POK_NEEDS_PORTS_SAMPLING)
pok_port_init ();
pok_queue_init ();
#endif
#if defined (POK_NEEDS_DEBUG) || defined (POK_NEEDS_CONSOLE)
#endif
#ifdef POK_NEEDS_INSTRUMENTATION
printf ("[INSTRUMENTATION][CHEDDAR] <event_table>\n");
printf ("[INSTRUMENTATION][CHEDDAR] <processor>\n");
printf ("[INSTRUMENTATION][CHEDDAR] <name>pok_kernel</name>\n");
{
printf ("[INSTRUMENTATION][CHEDDAR] <task_activation> 0 task %d</task_activation>\n", tmp);
}
#endif
#ifndef POK_NEEDS_PARTITIONS
main ();
#endif
}