Warn about the use of deprecated env() function

This patch enables warnings if one of the deprecate functions that rely
in the implicit use of the global Genode::env() accessor are called.

For the time being, some places within the base framework continue
to rely on the global function while omitting the warning by calling
'env_deprecated' instead of 'env'.

Issue #1987
This commit is contained in:
Norman Feske
2017-01-09 15:18:49 +01:00
parent 4c7ab07480
commit a7f40b24ca
80 changed files with 360 additions and 178 deletions

View File

@ -36,13 +36,13 @@ class Genode::Trace::Control_area
static Ram_dataspace_capability _try_alloc(size_t size)
{
try { return env()->ram_session()->alloc(size); }
try { return env_deprecated()->ram_session()->alloc(size); }
catch (...) { return Ram_dataspace_capability(); }
}
static Trace::Control *_try_attach(Dataspace_capability ds)
{
try { return env()->rm_session()->attach(ds); }
try { return env_deprecated()->rm_session()->attach(ds); }
catch (...) { return 0; }
}
@ -61,8 +61,8 @@ class Genode::Trace::Control_area
~Control_area()
{
if (_local_base) env()->rm_session()->detach(_local_base);
if (_ds.valid()) env()->ram_session()->free(_ds);
if (_local_base) env_deprecated()->rm_session()->detach(_local_base);
if (_ds.valid()) env_deprecated()->ram_session()->free(_ds);
}
Dataspace_capability dataspace() const { return _ds; }

View File

@ -57,13 +57,13 @@ class Genode::Trace::Session_component
:
ram(ram),
ds(ram.alloc(size)),
base(env()->rm_session()->attach(ds)),
base(env_deprecated()->rm_session()->attach(ds)),
size(ds.call<Dataspace::Rpc_size>())
{ }
~Argument_buffer()
{
env()->rm_session()->detach(base);
env_deprecated()->rm_session()->detach(base);
ram.free(ds);
}
} _argument_buffer;

View File

@ -102,13 +102,13 @@ class Genode::Trace::Subject
_ds = ram.alloc(_size);
/* copy content */
void *src = env()->rm_session()->attach(from_ds),
*dst = env()->rm_session()->attach(_ds);
void *src = env_deprecated()->rm_session()->attach(from_ds),
*dst = env_deprecated()->rm_session()->attach(_ds);
memcpy(dst, src, _size);
env()->rm_session()->detach(src);
env()->rm_session()->detach(dst);
env_deprecated()->rm_session()->detach(src);
env_deprecated()->rm_session()->detach(dst);
return true;
}

View File

@ -63,7 +63,7 @@ Core_env * Genode::core_env()
}
Env_deprecated * Genode::env() {
Env_deprecated * Genode::env_deprecated() {
return core_env(); }
@ -148,7 +148,7 @@ class Core_child : public Child_policy
_core_ram_cap(core_ram_cap), _core_ram(core_ram),
_core_cpu_cap(core_cpu_cap), _core_cpu(core_cpu),
_ram_quota(Child::effective_ram_quota(ram_quota)),
_child(*env()->rm_session(), _entrypoint, *this)
_child(*env_deprecated()->rm_session(), _entrypoint, *this)
{
_entrypoint.activate();
}
@ -250,7 +250,7 @@ int main()
* Allocate session meta data on distinct dataspaces to enable independent
* destruction (to enable quota trading) of session component objects.
*/
static Sliced_heap sliced_heap(env()->ram_session(), env()->rm_session());
static Sliced_heap sliced_heap(env_deprecated()->ram_session(), env_deprecated()->rm_session());
/*
* Factory for creating RPC capabilities within core
@ -303,7 +303,7 @@ int main()
log("", ram_quota / (1024*1024), " MiB RAM assigned to init");
static Reconstructible<Core_child>
init(services, *env()->ram_session(), env()->ram_session_cap(),
init(services, *env_deprecated()->ram_session(), env_deprecated()->ram_session_cap(),
ram_quota, core_cpu, core_cpu_cap);
platform()->wait_for_exit();

View File

@ -151,7 +151,7 @@ Session_component::Session_component(Allocator &md_alloc, size_t ram_quota,
char const *label, Source_registry &sources,
Policy_registry &policies)
:
_ram(*env()->ram_session()),
_ram(*env_deprecated()->ram_session()),
_md_alloc(&md_alloc, ram_quota),
_subjects_slab(&_md_alloc),
_policies_slab(&_md_alloc),

View File

@ -62,7 +62,7 @@ struct Genode::Expanding_ram_session_client : Upgradeable_client<Genode::Ram_ses
enum { ALLOC_OVERHEAD = 4096U };
Genode::snprintf(buf, sizeof(buf), "ram_quota=%lu",
size + ALLOC_OVERHEAD);
env()->parent()->resource_request(buf);
env_deprecated()->parent()->resource_request(buf);
},
NUM_ATTEMPTS);
}
@ -84,7 +84,7 @@ struct Genode::Expanding_ram_session_client : Upgradeable_client<Genode::Ram_ses
*/
char buf[128];
Genode::snprintf(buf, sizeof(buf), "ram_quota=%lu", amount);
env()->parent()->resource_request(buf);
env_deprecated()->parent()->resource_request(buf);
}
return ret;
}

View File

@ -38,7 +38,7 @@ struct Genode::Upgradeable_client : CLIENT
char buf[128];
snprintf(buf, sizeof(buf), "ram_quota=%lu", quota);
env()->parent()->upgrade(_id, buf);
env_deprecated()->parent()->upgrade(_id, buf);
}
};

View File

@ -34,7 +34,7 @@ namespace {
{
Genode::Entrypoint &_ep;
Genode::Parent &_parent = *env()->parent();
Genode::Parent &_parent = *env_deprecated()->parent();
/**
* Lock for serializing 'session' and 'close'
@ -63,25 +63,25 @@ namespace {
Env(Genode::Entrypoint &ep) : _ep(ep) { env_ptr = this; }
Genode::Parent &parent() override { return _parent; }
Genode::Ram_session &ram() override { return *Genode::env()->ram_session(); }
Genode::Cpu_session &cpu() override { return *Genode::env()->cpu_session(); }
Genode::Region_map &rm() override { return *Genode::env()->rm_session(); }
Genode::Pd_session &pd() override { return *Genode::env()->pd_session(); }
Genode::Ram_session &ram() override { return *Genode::env_deprecated()->ram_session(); }
Genode::Cpu_session &cpu() override { return *Genode::env_deprecated()->cpu_session(); }
Genode::Region_map &rm() override { return *Genode::env_deprecated()->rm_session(); }
Genode::Pd_session &pd() override { return *Genode::env_deprecated()->pd_session(); }
Genode::Entrypoint &ep() override { return _ep; }
Genode::Ram_session_capability ram_session_cap() override
{
return Genode::env()->ram_session_cap();
return Genode::env_deprecated()->ram_session_cap();
}
Genode::Cpu_session_capability cpu_session_cap() override
{
return Genode::env()->cpu_session_cap();
return Genode::env_deprecated()->cpu_session_cap();
}
Genode::Pd_session_capability pd_session_cap() override
{
return Genode::env()->pd_session_cap();
return Genode::env_deprecated()->pd_session_cap();
}
Genode::Id_space<Parent::Client> &id_space() override

View File

@ -15,7 +15,11 @@
/* Genode includes */
#include <base/entrypoint.h>
#include <base/component.h>
#define INCLUDED_BY_ENTRYPOINT_CC /* prevent "deprecated" warning */
#include <cap_session/connection.h>
#undef INCLUDED_BY_ENTRYPOINT_CC
#include <util/retry.h>
/* base-internal includes */

View File

@ -22,7 +22,7 @@ namespace Genode {
/*
* Request pointer to static environment of the Genode application
*/
Env_deprecated *env()
Env_deprecated *env_deprecated()
{
/*
* By placing the environment as static object here, we ensure that its

View File

@ -30,7 +30,7 @@ class Log_console : public Console
struct Log : Log_session_client
{
Session_capability _cap() {
return env()->parent()->session_cap(Parent::Env::log()); }
return env_deprecated()->parent()->session_cap(Parent::Env::log()); }
Log() : Log_session_client(reinterpret_cap_cast<Log_session>(_cap()))
{ }

View File

@ -26,8 +26,8 @@ Native_capability Rpc_entrypoint::_alloc_rpc_cap(Pd_session &pd,
Untyped_capability new_obj_cap =
retry<Genode::Pd_session::Out_of_metadata>(
[&] () { return pd.alloc_rpc_cap(_cap); },
[&] () { env()->parent()->upgrade(Parent::Env::pd(),
"ram_quota=16K"); });
[&] () { env_deprecated()->parent()->upgrade(Parent::Env::pd(),
"ram_quota=16K"); });
return new_obj_cap;
}

View File

@ -41,7 +41,7 @@ class Signal_handler_thread : Thread, Lock
void entry()
{
_signal_source.construct(env()->pd_session()->alloc_signal_source());
_signal_source.construct(env_deprecated()->pd_session()->alloc_signal_source());
unlock();
Signal_receiver::dispatch_signals(&(*_signal_source));
}
@ -68,7 +68,7 @@ class Signal_handler_thread : Thread, Lock
~Signal_handler_thread()
{
env()->pd_session()->free_signal_source(*_signal_source);
env_deprecated()->pd_session()->free_signal_source(*_signal_source);
}
};
@ -232,7 +232,7 @@ Signal_context_capability Signal_receiver::manage(Signal_context *context)
retry<Pd_session::Out_of_metadata>(
[&] () {
/* use signal context as imprint */
context->_cap = env()->pd_session()->alloc_context(_cap, (long)context);
context->_cap = env_deprecated()->pd_session()->alloc_context(_cap, (long)context);
},
[&] () {
size_t const quota = 1024*sizeof(long);
@ -241,7 +241,7 @@ Signal_context_capability Signal_receiver::manage(Signal_context *context)
log("upgrading quota donation for PD session (", quota, " bytes)");
env()->parent()->upgrade(Parent::Env::pd(), buf);
env_deprecated()->parent()->upgrade(Parent::Env::pd(), buf);
}
);

View File

@ -190,7 +190,7 @@ void Signal_receiver::_unsynchronized_dissolve(Signal_context * const context)
_platform_begin_dissolve(context);
/* tell core to stop sending signals referring to the context */
env()->pd_session()->free_context(context->_cap);
env_deprecated()->pd_session()->free_context(context->_cap);
/* restore default initialization of signal context */
context->_receiver = 0;

View File

@ -27,5 +27,5 @@ void Signal_transmitter::submit(unsigned cnt)
{
Trace::Signal_submit trace_event(cnt);
}
env()->pd_session()->submit(_context, cnt);
env_deprecated()->pd_session()->submit(_context, cnt);
}

View File

@ -223,7 +223,7 @@ Thread::Thread(size_t weight, const char *name, size_t stack_size,
if (_cpu_session) {
Dataspace_capability ds = _cpu_session->trace_control();
if (ds.valid())
_trace_control = env()->rm_session()->attach(ds);
_trace_control = env_deprecated()->rm_session()->attach(ds);
}
}
@ -262,5 +262,5 @@ Thread::~Thread()
* detached trace control dataspace.
*/
if (_trace_control)
env()->rm_session()->detach(_trace_control);
env_deprecated()->rm_session()->detach(_trace_control);
}

View File

@ -59,7 +59,7 @@ void Thread::_thread_start()
void Thread::_deinit_platform_thread()
{
if (!_cpu_session)
_cpu_session = env()->cpu_session();
_cpu_session = env_deprecated()->cpu_session();
_cpu_session->kill_thread(_thread_cap);
}
@ -69,11 +69,11 @@ void Thread::start()
{
/* if no CPU session is given, use it from the environment */
if (!_cpu_session)
_cpu_session = env()->cpu_session();
_cpu_session = env_deprecated()->cpu_session();
/* create thread at core */
addr_t const utcb = (addr_t)&_stack->utcb();
_thread_cap = _cpu_session->create_thread(env()->pd_session_cap(), name(),
_thread_cap = _cpu_session->create_thread(env_deprecated()->pd_session_cap(), name(),
_affinity, Weight(), utcb);
if (!_thread_cap.valid())
throw Cpu_session::Thread_creation_failed();

View File

@ -47,13 +47,13 @@ bool Trace::Logger::_evaluate_control()
/* unload policy */
if (policy_module) {
env()->rm_session()->detach(policy_module);
env_deprecated()->rm_session()->detach(policy_module);
policy_module = 0;
}
/* unmap trace buffer */
if (buffer) {
env()->rm_session()->detach(buffer);
env_deprecated()->rm_session()->detach(buffer);
buffer = 0;
}
@ -88,7 +88,7 @@ bool Trace::Logger::_evaluate_control()
max_event_size = 0;
policy_module = 0;
policy_module = env()->rm_session()->attach(policy_ds);
policy_module = env_deprecated()->rm_session()->attach(policy_ds);
/* relocate function pointers of policy callback table */
for (unsigned i = 0; i < sizeof(Trace::Policy_module)/sizeof(void *); i++) {
@ -111,7 +111,7 @@ bool Trace::Logger::_evaluate_control()
}
try {
buffer = env()->rm_session()->attach(buffer_ds);
buffer = env_deprecated()->rm_session()->attach(buffer_ds);
buffer->init(Dataspace_client(buffer_ds).size());
} catch (...) { }
@ -200,17 +200,17 @@ Trace::Logger *Thread::_logger()
logger->init_pending(true);
Thread_capability thread_cap = myself ? myself->_thread_cap
: env()->parent()->main_thread_cap();
: env_deprecated()->parent()->main_thread_cap();
Genode::Cpu_session *cpu = myself ? myself->_cpu_session
: env()->cpu_session();
if (!cpu) cpu = env()->cpu_session();
: env_deprecated()->cpu_session();
if (!cpu) cpu = env_deprecated()->cpu_session();
if (!myself)
if (!main_trace_control) {
Dataspace_capability ds = env()->cpu_session()->trace_control();
Dataspace_capability ds = env_deprecated()->cpu_session()->trace_control();
if (ds.valid())
main_trace_control = env()->rm_session()->attach(ds);
main_trace_control = env_deprecated()->rm_session()->attach(ds);
}
logger->init(thread_cap, cpu,

View File

@ -113,7 +113,7 @@ extern "C" void *abort(void)
/* Notify the parent of failure */
if (name != "main")
env()->parent()->exit(1);
env_deprecated()->parent()->exit(1);
sleep_forever();
return 0;

View File

@ -186,7 +186,7 @@ void genode_exit(int status)
for (func = &_dtors_start; func != &_dtors_end; (*func++)());
/* inform parent about the exit status */
Genode::env()->parent()->exit(status);
Genode::env_deprecated()->parent()->exit(status);
/* wait for destruction by the parent */
Genode::sleep_forever();

View File

@ -97,7 +97,7 @@ extern "C" void init_main_thread()
* Explicitly setup program environment at this point to ensure that its
* destructor won't be registered for the atexit routine.
*/
(void*)env();
(void*)env_deprecated();
init_log();
/* create a thread object for the main thread */