genode/base-linux/include/linux_dataspace/linux_dataspace.h
Norman Feske 7cb45e9648 Linux: Don't access file system outside of core
This patch changes the way of how dataspace content is accessed by
processes outside of core. Dataspaces are opened by core only and the
corresponding file descriptors are handed out the other processes via
the 'Linux_dataspace::fd()' RPC function. At the client side, the
returned file descriptor is then used to mmap the file.

Consequently, this patch eliminates all files from 'lx_rpath'. The
path is still needed by core to temporarily create dataspaces and
unix domain sockets. However, those files are unlinked immediately
after their creation.
2012-11-05 17:31:04 +01:00

56 lines
1.2 KiB
C++

/*
* \brief Linux-specific dataspace interface
* \author Norman Feske
* \date 2006-07-05
*/
/*
* Copyright (C) 2006-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__LINUX_DATASPACE__LINUX_DATASPACE_H_
#define _INCLUDE__LINUX_DATASPACE__LINUX_DATASPACE_H_
#include <dataspace/dataspace.h>
#include <base/stdint.h>
#include <base/ipc.h>
#include <base/rpc.h>
namespace Genode {
struct Linux_dataspace : Dataspace
{
enum { FNAME_LEN = 32 };
struct Filename { char buf[FNAME_LEN]; };
virtual ~Linux_dataspace() { }
/**
* Request name of file that represents the dataspace on Linux
*
* This function is used for calling execve on files passed as ROM
* dataspaces.
*/
virtual Filename fname() = 0;
/**
* Request file descriptor of the dataspace
*/
virtual Untyped_capability fd() = 0;
/*********************
** RPC declaration **
*********************/
GENODE_RPC(Rpc_fname, Filename, fname);
GENODE_RPC(Rpc_fd, Untyped_capability, fd);
GENODE_RPC_INTERFACE_INHERIT(Dataspace, Rpc_fname, Rpc_fd);
};
}
#endif /* _INCLUDE__LINUX_DATASPACE__LINUX_DATASPACE_H_ */