/*
* \brief Signal context for IRQ's
* \author Josef Soentgen
* \author Christian Helmuth
* \author Stefan Kalkowski
* \date 2014-10-14
*/
/*
* Copyright (C) 2014-2017 Genode Labs GmbH
*
* This file is distributed under the terms of the GNU General Public License
* version 2.
*/
#ifndef _LX_KIT__IRQ_H_
#define _LX_KIT__IRQ_H_
/* Genode includes */
#include
#include
namespace Lx { class Irq; }
class Lx::Irq
{
public:
static Irq &irq(Genode::Entrypoint *ep = nullptr,
Genode::Allocator *alloc = nullptr);
/**
* Request an IRQ
*/
virtual void request_irq(Genode::Irq_session_capability cap,
unsigned int irq,
irq_handler_t handler, void *dev_id,
irq_handler_t thread_fn = 0) = 0;
virtual void inject_irq(unsigned int irq) = 0;
/**
* Disable an IRQ
*/
virtual void disable_irq(unsigned int irq) = 0;
/**
* Enable an IRQ
*/
virtual void enable_irq(unsigned int irq) = 0;
};
#endif /* _LX_KIT__IRQ_H_ */