hw: remove Ipc_node::_await_ipc

ref #1108
This commit is contained in:
Martin Stein 2014-03-27 12:20:55 +01:00 committed by Norman Feske
parent ebfd6a55b3
commit 8d1e40eb5b
3 changed files with 9 additions and 26 deletions

View File

@ -186,11 +186,6 @@ class Kernel::Ipc_node
*/ */
virtual void _received_ipc_request(size_t const s) = 0; virtual void _received_ipc_request(size_t const s) = 0;
/**
* IPC node started waiting for message receipt
*/
virtual void _await_ipc() = 0;
/** /**
* IPC node returned from waiting due to message receipt * IPC node returned from waiting due to message receipt
* *
@ -256,7 +251,6 @@ class Kernel::Ipc_node
/* update state */ /* update state */
if (_state != PREPARE_REPLY) { _state = AWAIT_REPLY; } if (_state != PREPARE_REPLY) { _state = AWAIT_REPLY; }
else { _state = PREPARE_AND_AWAIT_REPLY; } else { _state = PREPARE_AND_AWAIT_REPLY; }
_await_ipc();
/* announce request */ /* announce request */
dst->_announce_request(&_outbuf); dst->_announce_request(&_outbuf);
@ -267,8 +261,10 @@ class Kernel::Ipc_node
* *
* \param inbuf_base base of the request buffer * \param inbuf_base base of the request buffer
* \param inbuf_size size of the request buffer * \param inbuf_size size of the request buffer
*
* \return wether a request could be received already
*/ */
void await_request(void * const inbuf_base, bool await_request(void * const inbuf_base,
size_t const inbuf_size) size_t const inbuf_size)
{ {
/* assertions */ /* assertions */
@ -283,11 +279,11 @@ class Kernel::Ipc_node
if (!_request_queue.empty()) { if (!_request_queue.empty()) {
_receive_request(_request_queue.dequeue()); _receive_request(_request_queue.dequeue());
_received_ipc_request(_inbuf.size); _received_ipc_request(_inbuf.size);
return; return true;
} }
/* no request announced, so wait */ /* no request announced, so wait */
_state = AWAIT_REQUEST; _state = AWAIT_REQUEST;
_await_ipc(); return false;
} }
/** /**

View File

@ -85,20 +85,6 @@ void Thread::_received_ipc_request(size_t const s)
} }
void Thread::_await_ipc()
{
switch (_state) {
case SCHEDULED:
_unschedule(AWAITS_IPC);
return;
default:
PWRN("wrong thread state to await IPC");
_stop();
return;
}
}
void Thread::_await_ipc_succeeded(size_t const s) void Thread::_await_ipc_succeeded(size_t const s)
{ {
switch (_state) { switch (_state) {
@ -432,7 +418,8 @@ void Thread::_call_await_request_msg()
void * buf_base; void * buf_base;
size_t buf_size; size_t buf_size;
_utcb_phys->message()->info_about_await_request(buf_base, buf_size); _utcb_phys->message()->info_about_await_request(buf_base, buf_size);
Ipc_node::await_request(buf_base, buf_size); if (Ipc_node::await_request(buf_base, buf_size)) { return; }
_unschedule(AWAITS_IPC);
} }
@ -441,7 +428,7 @@ 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");
_await_ipc(); _unschedule(AWAITS_IPC);
return; return;
} }
void * msg_base; void * msg_base;
@ -452,6 +439,7 @@ void Thread::_call_send_request_msg()
buf_base, buf_size); buf_base, buf_size);
Ipc_node::send_request_await_reply(dst, msg_base, msg_size, Ipc_node::send_request_await_reply(dst, msg_base, msg_size,
buf_base, buf_size); buf_base, buf_size);
_unschedule(AWAITS_IPC);
} }

View File

@ -281,7 +281,6 @@ class Kernel::Thread
**************/ **************/
void _received_ipc_request(size_t const s); void _received_ipc_request(size_t const s);
void _await_ipc();
void _await_ipc_succeeded(size_t const s); void _await_ipc_succeeded(size_t const s);
void _await_ipc_failed(); void _await_ipc_failed();