]> Zhao Yanbai Git Server - minix.git/commit
do_ipc() rearrangements
authorTomas Hruby <tom@minix3.org>
Tue, 6 Apr 2010 11:24:26 +0000 (11:24 +0000)
committerTomas Hruby <tom@minix3.org>
Tue, 6 Apr 2010 11:24:26 +0000 (11:24 +0000)
commita774cc832fe0b622622fea0fcf7518159856cb51
tree1e3a7ae4b4843c4509bb80f2ab6bf0fd4fc28f2a
parentb0d37b81c416374000007a92d2e6f3a2570f9e90
do_ipc() rearrangements

this patch does not add or change any functionality of do_ipc(), it
only makes things a little cleaner (hopefully).

Until now do_ipc() was responsible for handling all ipc calls. The
catch is that SENDA is fairly different which results in some ugly
code like this typecasting and variables naming which does not make
much sense for SENDA and makes the code hard to read.

result = mini_senda(caller_ptr, (asynmsg_t *)m_ptr, (size_t)src_dst_e);

As it is called directly from assembly, the new do_ipc() takes as
input values of 3 registers in reg_t variables (it used to be 4,
however, bit_map wasn't used so I removed it), does the checks common
to all ipc calls and call the appropriate handler either for
do_sync_ipc() (all except SENDA) or mini_senda() (for SENDA) while
typecasting the reg_t values correctly. As a result, handling SENDA
differences in do_sync_ipc() is no more needed. Also the code that
uses msg_size variable is improved a little bit.

arch_do_syscall() is simplified too.
kernel/arch/i386/arch_system.c
kernel/arch/i386/mpx.S
kernel/proc.c
kernel/proto.h