hw: rename Thread::State SCHEDULED in ACTIVE

As soon as helping is used, a thread may also be in a blocking state when its
scheduling context is ready. Hence, the state designation SCHEDULED for an active
thread would be pretty misleading.

ref #1102
This commit is contained in:
Martin Stein 2014-11-18 15:38:15 +01:00 committed by Christian Helmuth
parent 6f377ec4c5
commit 6370b6880a
3 changed files with 32 additions and 32 deletions

View File

@ -55,7 +55,7 @@ class Kernel::Thread
enum State enum State
{ {
SCHEDULED = 1, ACTIVE = 1,
AWAITS_START = 2, AWAITS_START = 2,
AWAITS_IPC = 3, AWAITS_IPC = 3,
AWAITS_RESUME = 4, AWAITS_RESUME = 4,
@ -103,14 +103,14 @@ class Kernel::Thread
bool _core() const; bool _core() const;
/** /**
* Resume execution rawly * Switch from an inactive state to the active state
*/ */
void _schedule(); void _become_active();
/** /**
* Pause execution rawly * Switch from the active state to the inactive state 's'
*/ */
void _unschedule(State const s); void _become_inactive(State const s);
/** /**
* Pause execution * Pause execution
@ -277,7 +277,7 @@ class Kernel::Thread
char const * const label); char const * const label);
/** /**
* Prepare thread to get scheduled the first time * Prepare thread to get active the first time
* *
* \param cpu targeted CPU * \param cpu targeted CPU
* \param pd targeted domain * \param pd targeted domain

View File

@ -34,8 +34,8 @@ bool Thread::_core() const { return pd_id() == core_pd()->id(); }
void Thread::_signal_context_kill_pending() void Thread::_signal_context_kill_pending()
{ {
assert(_state == SCHEDULED); assert(_state == ACTIVE);
_unschedule(AWAITS_SIGNAL_CONTEXT_KILL); _become_inactive(AWAITS_SIGNAL_CONTEXT_KILL);
} }
@ -43,7 +43,7 @@ void Thread::_signal_context_kill_done()
{ {
assert(_state == AWAITS_SIGNAL_CONTEXT_KILL); assert(_state == AWAITS_SIGNAL_CONTEXT_KILL);
user_arg_0(0); user_arg_0(0);
_schedule(); _become_active();
} }
@ -51,13 +51,13 @@ void Thread::_signal_context_kill_failed()
{ {
assert(_state == AWAITS_SIGNAL_CONTEXT_KILL); assert(_state == AWAITS_SIGNAL_CONTEXT_KILL);
user_arg_0(-1); user_arg_0(-1);
_schedule(); _become_active();
} }
void Thread::_await_signal(Signal_receiver * const receiver) void Thread::_await_signal(Signal_receiver * const receiver)
{ {
_unschedule(AWAITS_SIGNAL); _become_inactive(AWAITS_SIGNAL);
_signal_receiver = receiver; _signal_receiver = receiver;
} }
@ -66,7 +66,7 @@ void Thread::_receive_signal(void * const base, size_t const size)
{ {
assert(_state == AWAITS_SIGNAL && size <= _utcb_phys->size()); assert(_state == AWAITS_SIGNAL && size <= _utcb_phys->size());
Genode::memcpy(_utcb_phys->base(), base, size); Genode::memcpy(_utcb_phys->base(), base, size);
_schedule(); _become_active();
} }
@ -74,7 +74,7 @@ void Thread::_send_request_succeeded()
{ {
assert(_state == AWAITS_IPC); assert(_state == AWAITS_IPC);
user_arg_0(0); user_arg_0(0);
_schedule(); _become_active();
} }
@ -82,7 +82,7 @@ void Thread::_send_request_failed()
{ {
assert(_state == AWAITS_IPC); assert(_state == AWAITS_IPC);
user_arg_0(-1); user_arg_0(-1);
_schedule(); _become_active();
} }
@ -90,7 +90,7 @@ void Thread::_await_request_succeeded()
{ {
assert(_state == AWAITS_IPC); assert(_state == AWAITS_IPC);
user_arg_0(0); user_arg_0(0);
_schedule(); _become_active();
} }
@ -98,7 +98,7 @@ void Thread::_await_request_failed()
{ {
assert(_state == AWAITS_IPC); assert(_state == AWAITS_IPC);
user_arg_0(-1); user_arg_0(-1);
_schedule(); _become_active();
} }
@ -106,7 +106,7 @@ bool Thread::_resume()
{ {
switch (_state) { switch (_state) {
case AWAITS_RESUME: case AWAITS_RESUME:
_schedule(); _become_active();
return true; return true;
case AWAITS_IPC: case AWAITS_IPC:
Ipc_node::cancel_waiting(); Ipc_node::cancel_waiting();
@ -125,22 +125,22 @@ bool Thread::_resume()
void Thread::_pause() void Thread::_pause()
{ {
assert(_state == AWAITS_RESUME || _state == SCHEDULED); assert(_state == AWAITS_RESUME || _state == ACTIVE);
_unschedule(AWAITS_RESUME); _become_inactive(AWAITS_RESUME);
} }
void Thread::_schedule() void Thread::_become_active()
{ {
if (_state == SCHEDULED) { return; } if (_state == ACTIVE) { return; }
Cpu_job::_schedule(); Cpu_job::_schedule();
_state = SCHEDULED; _state = ACTIVE;
} }
void Thread::_unschedule(State const s) void Thread::_become_inactive(State const s)
{ {
if (_state == SCHEDULED) { Cpu_job::_unschedule(); } if (_state == ACTIVE) { Cpu_job::_unschedule(); }
_state = s; _state = s;
} }
@ -174,11 +174,11 @@ void Thread::init(Cpu * const cpu, Pd * const pd,
Genode::printf("\n"); Genode::printf("\n");
} }
/* start execution */ /* start execution */
if (start) { _schedule(); } if (start) { _become_active(); }
} }
void Thread::_stop() { _unschedule(STOPPED); } void Thread::_stop() { _become_inactive(STOPPED); }
void Thread::exception(unsigned const cpu) void Thread::exception(unsigned const cpu)
@ -216,7 +216,7 @@ void Thread::exception(unsigned const cpu)
void Thread::_receive_yielded_cpu() void Thread::_receive_yielded_cpu()
{ {
if (_state == AWAITS_RESUME) { _schedule(); } if (_state == AWAITS_RESUME) { _become_active(); }
else { PWRN("failed to receive yielded CPU"); } else { PWRN("failed to receive yielded CPU"); }
} }
@ -399,7 +399,7 @@ void Thread::_call_await_request_msg()
user_arg_0(0); user_arg_0(0);
return; return;
} }
_unschedule(AWAITS_IPC); _become_inactive(AWAITS_IPC);
} }
@ -408,14 +408,14 @@ void Thread::_call_send_request_msg()
Thread * const dst = Thread::pool()->object(user_arg_1()); Thread * const dst = Thread::pool()->object(user_arg_1());
if (!dst) { if (!dst) {
PWRN("unknown recipient"); PWRN("unknown recipient");
_unschedule(AWAITS_IPC); _become_inactive(AWAITS_IPC);
return; return;
} }
void * buf_base; void * buf_base;
size_t buf_size, msg_size; size_t buf_size, msg_size;
_utcb_phys->message()->request_info(buf_base, buf_size, msg_size); _utcb_phys->message()->request_info(buf_base, buf_size, msg_size);
Ipc_node::send_request(dst, buf_base, buf_size, msg_size); Ipc_node::send_request(dst, buf_base, buf_size, msg_size);
_unschedule(AWAITS_IPC); _become_inactive(AWAITS_IPC);
} }
@ -590,7 +590,7 @@ void Thread::_print_activity(bool const printing_thread)
case AWAITS_START: { case AWAITS_START: {
Genode::printf("\033[32m init\033[0m"); Genode::printf("\033[32m init\033[0m");
break; } break; }
case SCHEDULED: { case ACTIVE: {
if (!printing_thread) { Genode::printf("\033[32m run\033[0m"); } if (!printing_thread) { Genode::printf("\033[32m run\033[0m"); }
else { Genode::printf("\033[32m debug\033[0m"); } else { Genode::printf("\033[32m debug\033[0m"); }
break; } break; }

View File

@ -79,7 +79,7 @@ Thread_event Thread::* Thread::_event(unsigned const id) const
void Thread::_mmu_exception() void Thread::_mmu_exception()
{ {
_unschedule(AWAITS_RESUME); _become_inactive(AWAITS_RESUME);
if (in_fault(_fault_addr, _fault_writes)) { if (in_fault(_fault_addr, _fault_writes)) {
_fault_pd = (addr_t)_pd->platform_pd(); _fault_pd = (addr_t)_pd->platform_pd();
_fault_signal = _fault.signal_context_id(); _fault_signal = _fault.signal_context_id();