mirror of
https://github.com/genodelabs/genode.git
synced 2025-05-01 08:19:57 +00:00
parent
8d1e40eb5b
commit
b55646e1b0
@ -181,11 +181,6 @@ class Kernel::Ipc_node
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* IPC node received a request without waiting
|
|
||||||
*/
|
|
||||||
virtual void _received_ipc_request(size_t const s) = 0;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IPC node returned from waiting due to message receipt
|
* IPC node returned from waiting due to message receipt
|
||||||
*
|
*
|
||||||
@ -278,7 +273,6 @@ class Kernel::Ipc_node
|
|||||||
/* if anybody already announced a request receive it */
|
/* if anybody already announced a request receive it */
|
||||||
if (!_request_queue.empty()) {
|
if (!_request_queue.empty()) {
|
||||||
_receive_request(_request_queue.dequeue());
|
_receive_request(_request_queue.dequeue());
|
||||||
_received_ipc_request(_inbuf.size);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
/* no request announced, so wait */
|
/* no request announced, so wait */
|
||||||
|
@ -71,20 +71,6 @@ void Thread::_receive_signal(void * const base, size_t const size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Thread::_received_ipc_request(size_t const s)
|
|
||||||
{
|
|
||||||
switch (_state) {
|
|
||||||
case SCHEDULED:
|
|
||||||
user_arg_0(0);
|
|
||||||
return;
|
|
||||||
default:
|
|
||||||
PWRN("wrong thread state to receive 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) {
|
||||||
@ -418,7 +404,10 @@ 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);
|
||||||
if (Ipc_node::await_request(buf_base, buf_size)) { return; }
|
if (Ipc_node::await_request(buf_base, buf_size)) {
|
||||||
|
user_arg_0(0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
_unschedule(AWAITS_IPC);
|
_unschedule(AWAITS_IPC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -280,7 +280,6 @@ class Kernel::Thread
|
|||||||
** Ipc_node **
|
** Ipc_node **
|
||||||
**************/
|
**************/
|
||||||
|
|
||||||
void _received_ipc_request(size_t const s);
|
|
||||||
void _await_ipc_succeeded(size_t const s);
|
void _await_ipc_succeeded(size_t const s);
|
||||||
void _await_ipc_failed();
|
void _await_ipc_failed();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user