1.1 --- a/dstest_server.cc Sat Jan 23 00:01:22 2021 +0100
1.2 +++ b/dstest_server.cc Sat Jan 23 23:45:31 2021 +0100
1.3 @@ -28,14 +28,33 @@
1.4
1.5 #include <ipc/server.h>
1.6
1.7 -#include "dataspace_server.h"
1.8 +#include "mapped_file_object_server.h"
1.9 #include "page_mapper.h"
1.10 -#include "pager.h"
1.11 +#include "file_pager.h"
1.12 #include "pages.h"
1.13 #include "test_file_accessor.h"
1.14
1.15
1.16
1.17 +/* A component exposing the dataspace and mapped file interfaces. */
1.18 +
1.19 +class MappedFileServer : public FilePager, public MappedFileObject
1.20 +{
1.21 +public:
1.22 + explicit MappedFileServer(fileid_t fileid, PageMapper *mapper)
1.23 + : FilePager(fileid, mapper)
1.24 + {
1.25 + }
1.26 +
1.27 + virtual long map(unsigned long offset, l4_addr_t hot_spot, unsigned long flags, l4_snd_fpage_t *region)
1.28 + { return FilePager::map(offset, hot_spot, flags, region); }
1.29 +
1.30 + virtual long mmap(size_t position, size_t length, size_t *start_pos, size_t *end_pos, size_t *data_end)
1.31 + { return FilePager::mmap(position, length, start_pos, end_pos, data_end); }
1.32 +};
1.33 +
1.34 +
1.35 +
1.36 int main(void)
1.37 {
1.38 /* Some memory. */
1.39 @@ -44,9 +63,7 @@
1.40 Pages pages(&mem);
1.41 TestFileAccessor a(123UL);
1.42 PageMapper m(&a, &pages);
1.43 - Pager pager(&m);
1.44 -
1.45 - pager.mmap(0, page(10));
1.46 + MappedFileServer obj(123UL, &m);
1.47
1.48 /* Server capability. */
1.49
1.50 @@ -54,7 +71,7 @@
1.51
1.52 /* Register a server associating it with the given object. */
1.53
1.54 - long err = ipc_server_bind("server", (l4_umword_t) &pager, &server);
1.55 + long err = ipc_server_bind("server", (l4_umword_t) &obj, &server);
1.56
1.57 if (err)
1.58 {
1.59 @@ -64,8 +81,7 @@
1.60
1.61 /* Wait for messages, dispatching to the handler. */
1.62
1.63 - ipc_server_loop(Dataspace_expected_items, &pager,
1.64 - (ipc_server_handler_type) handle_Dataspace);
1.65 + ipc_server_loop_for(MappedFileObject, &obj);
1.66
1.67 return 0;
1.68 }