genode/repos/base-nova/src/core/include/irq_object.h

48 lines
1.1 KiB
C++

/*
* \brief Nova-specific instance of the IRQ object
* \author Alexander Boettcher
*/
/*
* Copyright (C) 2015 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 _CORE__INCLUDE__IRQ_OBJECT_H_
#define _CORE__INCLUDE__IRQ_OBJECT_H_
namespace Genode { class Irq_object; }
class Genode::Irq_object
{
private:
Signal_context_capability _sigh_cap;
Genode::addr_t _kernel_caps;
Genode::addr_t _msi_addr;
Genode::addr_t _msi_data;
Genode::addr_t _device_phys; /* PCI config extended address */
enum { KERNEL_CAP_COUNT_LOG2 = 0 };
Genode::addr_t const irq_sel() { return _kernel_caps; }
public:
Irq_object();
~Irq_object();
Genode::addr_t msi_address() const { return _msi_addr; }
Genode::addr_t msi_value() const { return _msi_data; }
void sigh(Signal_context_capability cap);
void ack_irq();
void start(unsigned irq, Genode::addr_t);
};
#endif /* _CORE__INCLUDE__IRQ_OBJECT_H_ */