vmm_context has been renamed to VmmContext and it is also used as a C++ object.
ipc::Message and ipc::Connection do not have to be friends.
There is no need to use 'extern "C"' on the sys_* functions in the kernel.
Hash table size can be specified as a template parameter instead of passing it to the constructor.