64 lines
1.2 KiB
C++
64 lines
1.2 KiB
C++
/*
|
|
* \brief Event that is provided by akernel thread-object for user handling
|
|
* \author Martin Stein
|
|
* \date 2013-11-13
|
|
*/
|
|
|
|
/*
|
|
* Copyright (C) 2013 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.
|
|
*/
|
|
|
|
namespace Kernel
|
|
{
|
|
class Thread;
|
|
|
|
/**
|
|
* Event that is provided by kernel thread-objects for user handling
|
|
*/
|
|
class Thread_event;
|
|
}
|
|
|
|
class Kernel::Thread_event : public Signal_ack_handler
|
|
{
|
|
private:
|
|
|
|
Thread * const _thread;
|
|
Signal_context * _signal_context;
|
|
|
|
|
|
/************************
|
|
** Signal_ack_handler **
|
|
************************/
|
|
|
|
void _signal_acknowledged();
|
|
|
|
public:
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* \param t thread that blocks on the event
|
|
*/
|
|
Thread_event(Thread * const t);
|
|
|
|
/**
|
|
* Submit to listening handlers just like a signal context
|
|
*/
|
|
void submit();
|
|
|
|
/**
|
|
* Kernel name of assigned signal context or 0 if not assigned
|
|
*/
|
|
unsigned signal_context_id() const;
|
|
|
|
/**
|
|
* Override signal context of the event
|
|
*
|
|
* \param c new signal context or 0 to dissolve current signal context
|
|
*/
|
|
void signal_context(Signal_context * const c);
|
|
};
|