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

@ -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 */