From e856158824684ec0b3f4aff9a58cba7d5f299788 Mon Sep 17 00:00:00 2001 From: Martin Stein Date: Thu, 27 Mar 2014 14:23:49 +0100 Subject: [PATCH] hw: no msg_base argument to Ipc_node::send_request ref #1108 --- base-hw/include/base/native_types.h | 16 +++++------ base-hw/src/core/kernel/ipc_node.h | 44 ++++++++++++++--------------- base-hw/src/core/kernel/thread.cc | 9 ++---- 3 files changed, 31 insertions(+), 38 deletions(-) diff --git a/base-hw/include/base/native_types.h b/base-hw/include/base/native_types.h index 15bf3e44c7..3d829d1f4d 100644 --- a/base-hw/include/base/native_types.h +++ b/base-hw/include/base/native_types.h @@ -165,25 +165,23 @@ class Genode::Message_tpl /** * Get properties of request message and receive buffer * - * \return msg_base base of complete send-message data - * \return msg_size size of complete send-message data - * \return buf_base base of receive buffer + * \return buf_base base of receive buffer and request message * \return buf_size size of receive buffer + * \return msg_size size of request message */ - void request_info(void * & msg_base, size_t & msg_size, - void * & buf_base, size_t & buf_size) const + void request_info(void * & buf_base, size_t & buf_size, + size_t & msg_size) const { - msg_base = (void *)this; - msg_size = _size(); buf_base = (void *)this; buf_size = MAX_SIZE; + msg_size = _size(); } /** * Get properties of reply message * - * \return msg_base base of complete send-message data - * \return msg_size size of complete send-message data + * \return msg_base base of reply message + * \return msg_size size of reply message */ void reply_info(void * & msg_base, size_t & msg_size) const { diff --git a/base-hw/src/core/kernel/ipc_node.h b/base-hw/src/core/kernel/ipc_node.h index 7e0288859a..cb623ce04c 100644 --- a/base-hw/src/core/kernel/ipc_node.h +++ b/base-hw/src/core/kernel/ipc_node.h @@ -215,28 +215,26 @@ class Kernel::Ipc_node /** * Send a request and wait for the according reply * - * \param dest targeted IPC node - * \param req_base base of the request payload - * \param req_size size of the request payload - * \param inbuf_base base of the reply buffer - * \param inbuf_size size of the reply buffer + * \param dst targeted IPC node + * \param buf_base base of receive buffer and request message + * \param buf_size size of receive buffer + * \param msg_size size of request message */ - void send_request(Ipc_node * const dst, void * const req_base, - size_t const req_size, void * const inbuf_base, - size_t const inbuf_size) + void send_request(Ipc_node * const dst, void * const buf_base, + size_t const buf_size, size_t const msg_size) { /* assertions */ assert(_state == INACTIVE || _state == PREPARE_REPLY); /* prepare transmission of request message */ - _outbuf.base = req_base; - _outbuf.size = req_size; + _outbuf.base = buf_base; + _outbuf.size = msg_size; _outbuf.src = this; _outbuf_dst = dst; /* prepare reception of reply message */ - _inbuf.base = inbuf_base; - _inbuf.size = inbuf_size; + _inbuf.base = buf_base; + _inbuf.size = buf_size; /* don't clear '_inbuf.origin' because we might prepare a reply */ /* update state */ @@ -250,20 +248,20 @@ class Kernel::Ipc_node /** * Wait until a request has arrived and load it for handling * - * \param inbuf_base base of the request buffer - * \param inbuf_size size of the request buffer + * \param buf_base base of receive buffer + * \param buf_size size of receive buffer * * \return wether a request could be received already */ - bool await_request(void * const inbuf_base, - size_t const inbuf_size) + bool await_request(void * const buf_base, + size_t const buf_size) { /* assertions */ assert(_state == INACTIVE); /* prepare receipt of request */ - _inbuf.base = inbuf_base; - _inbuf.size = inbuf_size; + _inbuf.base = buf_base; + _inbuf.size = buf_size; _inbuf.src = 0; /* if anybody already announced a request receive it */ @@ -279,16 +277,16 @@ class Kernel::Ipc_node /** * Reply to last request if there's any * - * \param reply_base base of the reply payload - * \param reply_size size of the reply payload + * \param msg_base base of reply message + * \param msg_size size of reply message */ - void send_reply(void * const reply_base, - size_t const reply_size) + void send_reply(void * const msg_base, + size_t const msg_size) { /* reply to the last request if we have to */ if (_state == PREPARE_REPLY) { if (_inbuf.src) { - _inbuf.src->_receive_reply(reply_base, reply_size); + _inbuf.src->_receive_reply(msg_base, msg_size); _inbuf.src = 0; } _state = INACTIVE; diff --git a/base-hw/src/core/kernel/thread.cc b/base-hw/src/core/kernel/thread.cc index be4b776001..17d616a972 100644 --- a/base-hw/src/core/kernel/thread.cc +++ b/base-hw/src/core/kernel/thread.cc @@ -420,13 +420,10 @@ void Thread::_call_send_request_msg() _unschedule(AWAITS_IPC); return; } - void * msg_base; - size_t msg_size; void * buf_base; - size_t buf_size; - Native_utcb::Message * const msg = _utcb_phys->message(); - msg->request_info(msg_base, msg_size, buf_base, buf_size); - Ipc_node::send_request(dst, msg_base, msg_size, buf_base, buf_size); + size_t 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); _unschedule(AWAITS_IPC); }