mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-28 17:48:53 +00:00
b1910cdd54
This patch removes the SIGNAL service from core and moves its functionality to the PD session. Furthermore, it unifies the PD service implementation and terminology across the various base platforms. Issue #1841
69 lines
1.6 KiB
C++
69 lines
1.6 KiB
C++
/*
|
|
* \brief Signal-source interface
|
|
* \author Norman Feske
|
|
* \date 2010-02-03
|
|
*
|
|
* This file is only included by 'pd_session/pd_session.h' and relies
|
|
* on the headers included there. It is a separate header file to make it
|
|
* easily replaceable by a platform-specific implementation.
|
|
*/
|
|
|
|
/*
|
|
* Copyright (C) 2010-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_SOURCE__SIGNAL_SOURCE_H_
|
|
#define _INCLUDE__SIGNAL_SOURCE__SIGNAL_SOURCE_H_
|
|
|
|
namespace Genode { class Signal_source; }
|
|
|
|
/**
|
|
* Blocking part of the PD-session interface
|
|
*
|
|
* The blocking 'wait_for_signal()' operation cannot be part of the
|
|
* PD-session interface because otherwise, context allocations or
|
|
* signal submissions would not be possible while blocking for signals.
|
|
* Therefore, the blocking part is implemented as a kernel-specific
|
|
* special case.
|
|
*/
|
|
struct Genode::Signal_source
|
|
{
|
|
class Signal
|
|
{
|
|
private:
|
|
|
|
long _imprint;
|
|
int _num;
|
|
|
|
public:
|
|
|
|
Signal(long imprint, int num) : _imprint(imprint), _num(num) { }
|
|
|
|
Signal() : _imprint(0), _num(0) { }
|
|
|
|
long imprint() { return _imprint; }
|
|
|
|
int num() { return _num; }
|
|
};
|
|
|
|
virtual ~Signal_source() { }
|
|
|
|
/**
|
|
* Wait for signal
|
|
*/
|
|
virtual Signal wait_for_signal() = 0;
|
|
|
|
|
|
/*********************
|
|
** RPC declaration **
|
|
*********************/
|
|
|
|
GENODE_RPC(Rpc_wait_for_signal, Signal, wait_for_signal);
|
|
GENODE_RPC_INTERFACE(Rpc_wait_for_signal);
|
|
};
|
|
|
|
#endif /* _INCLUDE__SIGNAL_SOURCE__SIGNAL_SOURCE_H_ */
|