/*
** create a new kernel thread. Called by the creator.
*/
void launch_thread(int (*func)(void *), my_threads *thread)
{
/*
** initialize the semaphore:
** we start with the semaphore locked. The new kernel
** thread will setup its stuff and unlock it. This
** control flow (the one that creates the thread) blocks