# HG changeset patch # User Paul Boddie # Date 1611183950 -3600 # Node ID 9518527e9aac3493aa584f8a198e560a1cc19e12 # Parent c9bcca9486351d6f7d15014032fab9ff70ffd9c2 Moved IPC-related code into a new module. diff -r c9bcca948635 -r 9518527e9aac Makefile --- a/Makefile Wed Jan 20 01:37:12 2021 +0100 +++ b/Makefile Thu Jan 21 00:05:50 2021 +0100 @@ -22,7 +22,7 @@ SERVER_INTERFACES_SRC_CC = $(call interfaces_to_server_cc,$(SERVER_INTERFACES_CC)) PLAIN_SRC_CC = \ - dstest_server.cc flexpage.cc \ + dstest_server.cc flexpage.cc ipc.cc \ memory.cc memory_map.cc memory_utils.cc \ region.cc resource.cc simple_pager.cc diff -r c9bcca948635 -r 9518527e9aac ipc.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ipc.cc Thu Jan 21 00:05:50 2021 +0100 @@ -0,0 +1,22 @@ +#include + +#include "ipc.h" +#include "send_flexpage.h" + + + +/* Make a representation of the flexpage for the IPC system. */ + +void ipc_prepare_flexpage(Flexpage *flexpage, unsigned long offset, + l4_addr_t hot_spot, unsigned long flags, + l4_snd_fpage_t *region) +{ + SendFlexpage send_flexpage = flexpage->to_send(offset, hot_spot); + + region->fpage = l4_fpage(send_flexpage.base_addr, send_flexpage.order, + (flags & L4RE_DS_MAP_FLAG_RW) ? L4_FPAGE_RW + : L4_FPAGE_RO); + region->snd_base = hot_spot; +} + +// vim: tabstop=4 expandtab shiftwidth=4 diff -r c9bcca948635 -r 9518527e9aac ipc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ipc.h Thu Jan 21 00:05:50 2021 +0100 @@ -0,0 +1,13 @@ +#pragma once + +#include + +#include "flexpage.h" + + + +void ipc_prepare_flexpage(Flexpage *flexpage, unsigned long offset, + l4_addr_t hot_spot, unsigned long flags, + l4_snd_fpage_t *region); + +// vim: tabstop=4 expandtab shiftwidth=4 diff -r c9bcca948635 -r 9518527e9aac simple_pager.cc --- a/simple_pager.cc Wed Jan 20 01:37:12 2021 +0100 +++ b/simple_pager.cc Thu Jan 21 00:05:50 2021 +0100 @@ -1,6 +1,7 @@ #include #include "dataspace_server.h" +#include "ipc.h" #include "simple_pager.h" @@ -33,16 +34,9 @@ flexpage.reset(offset); - /* Issue the flexpage via the IPC system. */ - - SendFlexpage send_flexpage = flexpage.to_send(offset, hot_spot); - /* Send the flexpage explicitly. */ - region->fpage = l4_fpage(send_flexpage.base_addr, send_flexpage.order, - (flags & L4RE_DS_MAP_FLAG_RW) ? L4_FPAGE_RW - : L4_FPAGE_RO); - region->snd_base = hot_spot; + ipc_prepare_flexpage(&flexpage, offset, hot_spot, flags, region); long err = complete_Dataspace_map(*region);