/*
* \brief Loader session interface
* \author Christian Prochaska
* \date 2009-10-05
*/
/*
* Copyright (C) 2009-2012 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__LOADER_SESSION__LOADER_SESSION_H_
#define _INCLUDE__LOADER_SESSION__LOADER_SESSION_H_
#include
#include
#include
#include
#include
#include
#include
namespace Loader {
struct Session : Genode::Session
{
/**
* Exception type
*/
class Start_failed { };
class Rom_access_failed : public Start_failed { };
class Plugin_start_timed_out : public Start_failed { };
class Invalid_args : public Start_failed { };
typedef Genode::Rpc_in_buffer<64> Name;
typedef Genode::Rpc_in_buffer<160> Start_args;
static const char *service_name() { return "Loader"; }
virtual ~Session() { }
virtual Genode::Dataspace_capability dataspace() = 0;
/**
* Start program or subsystem contained in dataspace
*
* \throw Rom_access_failed
* \throw Plugin_start_timed_out
*/
virtual void start(Start_args const &args,
int max_width, int max_height,
Genode::Alarm::Time timeout,
Name const &name) = 0;
virtual Nitpicker::View_capability view(int *w, int *h, int *buf_x, int *buf_y) = 0;
/*******************
** RPC interface **
*******************/
GENODE_RPC(Rpc_dataspace, Genode::Dataspace_capability, dataspace);
GENODE_RPC_THROW(Rpc_start, void, start,
GENODE_TYPE_LIST(Start_failed, Rom_access_failed, Plugin_start_timed_out, Invalid_args),
Start_args const &, int, int, Genode::Alarm::Time, Name const &);
GENODE_RPC(Rpc_view, Nitpicker::View_capability, view, int *, int *, int *, int *);
GENODE_RPC_INTERFACE(Rpc_dataspace, Rpc_start, Rpc_view);
};
}
#endif /* _INCLUDE__LOADER_SESSION__LOADER_SESSION_H_ */