mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-26 17:01:07 +00:00
f32a97da38
By assigning the file name as label, we may become able to remove the filename argument in the future by just interpreting the last part of the label as filename. By keeping only the label, we won't need to consider conditional routing (via <if-arg>) based on session arguments other than the label anymore.
61 lines
1.4 KiB
C++
61 lines
1.4 KiB
C++
/*
|
|
* \brief Connection to ROM file service
|
|
* \author Norman Feske
|
|
* \date 2008-08-22
|
|
*/
|
|
|
|
/*
|
|
* Copyright (C) 2008-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__ROM_SESSION__CONNECTION_H_
|
|
#define _INCLUDE__ROM_SESSION__CONNECTION_H_
|
|
|
|
#include <rom_session/client.h>
|
|
#include <base/connection.h>
|
|
#include <base/printf.h>
|
|
|
|
namespace Genode {
|
|
|
|
class Rom_connection : public Connection<Rom_session>,
|
|
public Rom_session_client
|
|
{
|
|
public:
|
|
|
|
class Rom_connection_failed : public Parent::Exception { };
|
|
|
|
private:
|
|
|
|
Rom_session_capability _create_session(const char *filename, const char *label)
|
|
{
|
|
try {
|
|
return session("ram_quota=4K, filename=\"%s\", label=\"%s\"",
|
|
filename, label ? label: filename); }
|
|
catch (...) {
|
|
PERR("Could not open file \"%s\"", filename);
|
|
throw Rom_connection_failed();
|
|
}
|
|
}
|
|
|
|
public:
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* \param filename name of ROM file
|
|
* \param label initial session label
|
|
*
|
|
* \throw Rom_connection_failed
|
|
*/
|
|
Rom_connection(const char *filename, const char *label = 0) :
|
|
Connection<Rom_session>(_create_session(filename, label)),
|
|
Rom_session_client(cap())
|
|
{ }
|
|
};
|
|
}
|
|
|
|
#endif /* _INCLUDE__ROM_SESSION__CONNECTION_H_ */
|