1.1 --- a/dstest_client.cc Sun Jan 24 19:29:07 2021 +0100
1.2 +++ b/dstest_client.cc Mon Feb 01 00:10:21 2021 +0100
1.3 @@ -28,6 +28,9 @@
1.4
1.5 #include <ipc/mem_ipc.h>
1.6
1.7 +#include "dataspace_client.h"
1.8 +#include "opener_client.h"
1.9 +#include "opener_context_client.h"
1.10 #include "mapped_file_client.h"
1.11 #include "memory_utils.h"
1.12
1.13 @@ -36,8 +39,62 @@
1.14 int main(void)
1.15 {
1.16 l4_cap_idx_t server = l4re_env_get_cap("server");
1.17 + l4_cap_idx_t context_ref;
1.18 + client_Opener opener(server);
1.19
1.20 - client_MappedFile obj(server);
1.21 + long err = opener.context(&context_ref);
1.22 +
1.23 + if (err)
1.24 + {
1.25 + printf("Could not obtain context: %s\n", l4sys_errtostr(err));
1.26 + return 1;
1.27 + }
1.28 +
1.29 + client_OpenerContext context(context_ref);
1.30 + client_Dataspace context_ds(context_ref);
1.31 + unsigned long size, flags;
1.32 +
1.33 + err = context_ds.info(&size, &flags);
1.34 +
1.35 + if (err)
1.36 + {
1.37 + printf("Could not obtain context info: %s\n", l4sys_errtostr(err));
1.38 + return 1;
1.39 + }
1.40 +
1.41 + /* Map context memory to write the filename. */
1.42 +
1.43 + char *memory;
1.44 +
1.45 + printf("Attach region of size %ld...\n", size);
1.46 +
1.47 + err = ipc_attach_dataspace(context_ref, size, (void **) &memory);
1.48 +
1.49 + if (err)
1.50 + {
1.51 + printf("Could not map memory: %s\n", l4sys_errtostr(err));
1.52 + return 1;
1.53 + }
1.54 +
1.55 + printf("Mapped memory at %p\n", memory);
1.56 +
1.57 + /* Write the filename. */
1.58 +
1.59 + strcpy(memory, "123");
1.60 +
1.61 + /* Invoke the open method to receive the file reference. */
1.62 +
1.63 + l4_cap_idx_t file;
1.64 +
1.65 + err = context.open(L4_FPAGE_RW, &size, &file);
1.66 +
1.67 + if (err)
1.68 + {
1.69 + printf("Could not obtain file: %s\n", l4sys_errtostr(err));
1.70 + return 1;
1.71 + }
1.72 +
1.73 + client_MappedFile obj(file);
1.74
1.75 /* Some memory to be mapped. */
1.76
1.77 @@ -45,7 +102,7 @@
1.78
1.79 printf("Map region from %ld to %ld...\n", 0L, page(10));
1.80
1.81 - long err = obj.mmap(0, page(10), &start_pos, &end_pos, &data_end);
1.82 + err = obj.mmap(0, page(10), &start_pos, &end_pos, &data_end);
1.83
1.84 if (err)
1.85 {
1.86 @@ -53,12 +110,11 @@
1.87 return 1;
1.88 }
1.89
1.90 - char *memory;
1.91 - unsigned long size = end_pos - start_pos;
1.92 + size = end_pos - start_pos;
1.93
1.94 printf("Attach region of size %ld...\n", size);
1.95
1.96 - err = ipc_attach_dataspace(server, size, (void **) &memory);
1.97 + err = ipc_attach_dataspace(file, size, (void **) &memory);
1.98
1.99 if (err)
1.100 {