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
}