/*
* \brief Fiasco.OC specific thread bootstrap code
* \author Stefan Kalkowski
* \date 2011-01-20
*/
/*
* Copyright (C) 2011-2012 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2.
*/
#include
#include
#include
#include
namespace Fiasco {
#include
}
void Genode::Thread_base::_thread_bootstrap()
{
using namespace Genode;
using namespace Fiasco;
/* first, receive my own gate-capability and badge from starter thread */
addr_t thread_base = 0;
unsigned long my_badge = 0;
Msgbuf<128> snd_msg, rcv_msg;
Ipc_server srv(&snd_msg, &rcv_msg);
srv >> IPC_WAIT >> thread_base >> my_badge << IPC_REPLY;
/* store both values in user-defined section of the UTCB */
l4_utcb_tcr()->user[UTCB_TCR_BADGE] = my_badge;
l4_utcb_tcr()->user[UTCB_TCR_THREAD_OBJ] = thread_base;
}
void Genode::Thread_base::_thread_start()
{
using namespace Genode;
Thread_base::myself()->_thread_bootstrap();
Thread_base::myself()->entry();
sleep_forever();
}
void Genode::Thread_base::_init_platform_thread() { }