genode/base-nova/include/signal_session/nova_source.h
Alexander Boettcher fe19103546 nova: create sm for signalling via pager
The 'pause' call on base-nova assumes that a thread can solely block in its
associated semaphore. Main reason is that so core can unblock a thread in order
that the recall exception gets delivered and the register state can be
obtained.

Unfortunately the signal session implementation creates a semaphore, which is
unknown by the pager code. Instead create the semaphore via the pager of the
thread, so that the pager can unblock the signal thread when a pause is issued.

Issue #478
2013-10-16 09:26:09 +02:00

36 lines
834 B
C++

/*
* \brief NOVA-specific signal source RPC interface
* \author Norman Feske
* \date 2011-04-12
*/
/*
* Copyright (C) 2011-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.
*/
#ifndef _INCLUDE__SIGNAL_SESSION__NOVA_SOURCE_H_
#define _INCLUDE__SIGNAL_SESSION__NOVA_SOURCE_H_
#include <base/rpc.h>
#include <signal_session/source.h>
namespace Genode {
struct Nova_signal_source : Signal_source
{
/*********************
** RPC declaration **
*********************/
GENODE_RPC(Rpc_register_semaphore, void, _register_semaphore,
Native_capability const &);
GENODE_RPC_INTERFACE_INHERIT(Signal_source, Rpc_register_semaphore);
};
}
#endif /* _INCLUDE__SIGNAL_SESSION__NOVA_SOURCE_H_ */