mirror of
https://github.com/mmueller41/genode.git
synced 2026-01-21 12:32:56 +01:00
@@ -47,7 +47,7 @@ class Genode::Dataspace_component : public Rpc_object<Linux_dataspace>
|
||||
size_t const _size; /* size of dataspace in bytes */
|
||||
addr_t const _addr; /* meaningless on linux */
|
||||
Native_capability _cap; /* capability / file descriptor */
|
||||
bool const _writable; /* false if read-only */
|
||||
bool const _writeable; /* false if read-only */
|
||||
|
||||
/*
|
||||
* Holds the dataspace owner if a distinction between owner and
|
||||
@@ -74,10 +74,10 @@ class Genode::Dataspace_component : public Rpc_object<Linux_dataspace>
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
Dataspace_component(size_t size, addr_t addr, Cache, bool writable,
|
||||
Dataspace_component(size_t size, addr_t addr, Cache, bool writeable,
|
||||
Dataspace_owner * owner)
|
||||
:
|
||||
_size(size), _addr(addr), _cap(), _writable(writable), _owner(owner)
|
||||
_size(size), _addr(addr), _cap(), _writeable(writeable), _owner(owner)
|
||||
{ }
|
||||
|
||||
/**
|
||||
@@ -85,7 +85,7 @@ class Genode::Dataspace_component : public Rpc_object<Linux_dataspace>
|
||||
*/
|
||||
Dataspace_component()
|
||||
:
|
||||
_size(0), _addr(0), _cap(), _writable(false), _owner(nullptr)
|
||||
_size(0), _addr(0), _cap(), _writeable(false), _owner(nullptr)
|
||||
{ }
|
||||
|
||||
/**
|
||||
@@ -93,7 +93,7 @@ class Genode::Dataspace_component : public Rpc_object<Linux_dataspace>
|
||||
* reasons and should not be used.
|
||||
*/
|
||||
Dataspace_component(size_t size, addr_t, addr_t phys_addr,
|
||||
Cache, bool writable, Dataspace_owner *_owner);
|
||||
Cache, bool writeable, Dataspace_owner *_owner);
|
||||
|
||||
/**
|
||||
* This constructor is especially used for ROM dataspaces
|
||||
@@ -127,8 +127,8 @@ class Genode::Dataspace_component : public Rpc_object<Linux_dataspace>
|
||||
** Dataspace interface **
|
||||
*************************/
|
||||
|
||||
size_t size() override { return _size; }
|
||||
bool writable() override { return _writable; }
|
||||
size_t size() override { return _size; }
|
||||
bool writeable() override { return _writeable; }
|
||||
|
||||
|
||||
/****************************************
|
||||
|
||||
@@ -187,8 +187,8 @@ int Region_map_mmap::_dataspace_fd(Capability<Dataspace> ds_cap)
|
||||
}
|
||||
|
||||
|
||||
bool Region_map_mmap::_dataspace_writable(Dataspace_capability ds_cap)
|
||||
bool Region_map_mmap::_dataspace_writeable(Dataspace_capability ds_cap)
|
||||
{
|
||||
return core_env().entrypoint().apply(ds_cap, [] (Dataspace *ds) {
|
||||
return ds ? ds->writable() : false; });
|
||||
return ds ? ds->writeable() : false; });
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ Dataspace_component::Dataspace_component(const char *args)
|
||||
_size(_file_size()),
|
||||
_addr(0),
|
||||
_cap(_fd_to_cap(lx_open(_fname.buf, O_RDONLY | LX_O_CLOEXEC, S_IRUSR | S_IXUSR))),
|
||||
_writable(false),
|
||||
_writeable(false),
|
||||
_owner(0)
|
||||
{ }
|
||||
|
||||
@@ -76,7 +76,7 @@ Dataspace_component::Dataspace_component(const char *args)
|
||||
Dataspace_component::Dataspace_component(size_t size, addr_t, addr_t phys_addr,
|
||||
Cache, bool, Dataspace_owner *_owner)
|
||||
:
|
||||
_size(size), _addr(phys_addr), _cap(), _writable(false), _owner(_owner)
|
||||
_size(size), _addr(phys_addr), _cap(), _writeable(false), _owner(_owner)
|
||||
{
|
||||
warning("Should only be used for IOMEM and not within Linux.");
|
||||
_fname.buf[0] = 0;
|
||||
|
||||
@@ -67,15 +67,15 @@ Dataspace_component::Dataspace_component(const char *args)
|
||||
_size(_file_size()),
|
||||
_addr(0),
|
||||
_cap(_fd_to_cap(lx_open(_fname.buf, O_RDONLY | LX_O_CLOEXEC, S_IRUSR | S_IXUSR))),
|
||||
_writable(false),
|
||||
_writeable(false),
|
||||
_owner(0)
|
||||
{ }
|
||||
|
||||
|
||||
Dataspace_component::Dataspace_component(size_t size, addr_t, addr_t phys_addr,
|
||||
Cache, bool writable, Dataspace_owner *_owner)
|
||||
Cache, bool writeable, Dataspace_owner *_owner)
|
||||
:
|
||||
_size(size), _addr(phys_addr), _cap(), _writable(writable), _owner(_owner)
|
||||
_size(size), _addr(phys_addr), _cap(), _writeable(writeable), _owner(_owner)
|
||||
{
|
||||
_fname.buf[0] = 0;
|
||||
}
|
||||
|
||||
@@ -97,9 +97,9 @@ class Genode::Region_map_mmap : public Region_map, public Dataspace
|
||||
int _dataspace_fd(Capability<Dataspace>);
|
||||
|
||||
/**
|
||||
* Determine whether dataspace is writable
|
||||
* Determine whether dataspace is writeable
|
||||
*/
|
||||
bool _dataspace_writable(Capability<Dataspace>);
|
||||
bool _dataspace_writeable(Capability<Dataspace>);
|
||||
|
||||
public:
|
||||
|
||||
@@ -134,7 +134,7 @@ class Genode::Region_map_mmap : public Region_map, public Dataspace
|
||||
|
||||
size_t size() override { return _size; }
|
||||
|
||||
bool writable() override { return true; }
|
||||
bool writeable() override { return true; }
|
||||
|
||||
/**
|
||||
* Return pseudo dataspace capability of the RM session
|
||||
|
||||
@@ -32,8 +32,8 @@ struct Genode::Linux_dataspace_client : Rpc_client<Linux_dataspace>
|
||||
** Generic dataspace interface **
|
||||
*********************************/
|
||||
|
||||
size_t size() override { return call<Rpc_size>(); }
|
||||
bool writable() override { return call<Rpc_writable>(); }
|
||||
size_t size() override { return call<Rpc_size>(); }
|
||||
bool writeable() override { return call<Rpc_writeable>(); }
|
||||
|
||||
|
||||
/****************************************
|
||||
|
||||
@@ -48,9 +48,9 @@ int Region_map_mmap::_dataspace_fd(Dataspace_capability ds)
|
||||
}
|
||||
|
||||
|
||||
bool Region_map_mmap::_dataspace_writable(Dataspace_capability ds)
|
||||
bool Region_map_mmap::_dataspace_writeable(Dataspace_capability ds)
|
||||
{
|
||||
return Dataspace_client(ds).writable();
|
||||
return Dataspace_client(ds).writeable();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -129,12 +129,12 @@ void *Region_map_mmap::_map_local(Dataspace_capability ds,
|
||||
bool overmap,
|
||||
bool writeable)
|
||||
{
|
||||
int const fd = _dataspace_fd(ds);
|
||||
bool const writable = _dataspace_writable(ds) && writeable;
|
||||
writeable = _dataspace_writeable(ds) && writeable;
|
||||
|
||||
int const fd = _dataspace_fd(ds);
|
||||
int const flags = MAP_SHARED | (overmap ? MAP_FIXED : 0);
|
||||
int const prot = PROT_READ
|
||||
| (writable ? PROT_WRITE : 0)
|
||||
| (writeable ? PROT_WRITE : 0)
|
||||
| (executable ? PROT_EXEC : 0);
|
||||
void * const addr_in = use_local_addr ? (void*)local_addr : 0;
|
||||
void * const addr_out = lx_mmap(addr_in, size, prot, flags, fd, offset);
|
||||
|
||||
Reference in New Issue
Block a user