1.1 --- a/dstest_host_client.cc Mon Mar 01 00:22:56 2021 +0100
1.2 +++ b/dstest_host_client.cc Thu Mar 04 23:50:40 2021 +0100
1.3 @@ -26,12 +26,9 @@
1.4 #include <string.h>
1.5 #include <stdlib.h>
1.6
1.7 -#include <ipc/mem_ipc.h>
1.8 +#include <ipc/thread.h>
1.9
1.10 -#include "dataspace_client.h"
1.11 -#include "opener_client.h"
1.12 -#include "opener_context_client.h"
1.13 -#include "mapped_file_client.h"
1.14 +#include "file.h"
1.15 #include "memory_utils.h"
1.16
1.17
1.18 @@ -57,10 +54,9 @@
1.19 /* Obtain access to the filesystem. */
1.20
1.21 l4_cap_idx_t server = l4re_env_get_cap("server");
1.22 - l4_cap_idx_t context_ref;
1.23 - client_Opener opener(server);
1.24 + file_t context;
1.25
1.26 - long err = opener.context(&context_ref);
1.27 + long err = file_context(&context, server);
1.28
1.29 if (err)
1.30 {
1.31 @@ -68,43 +64,15 @@
1.32 return 1;
1.33 }
1.34
1.35 - client_OpenerContext context(context_ref);
1.36 - client_Dataspace context_ds(context_ref);
1.37 - unsigned long size, flags;
1.38 -
1.39 - err = context_ds.info(&size, &flags);
1.40 -
1.41 - if (err)
1.42 - {
1.43 - printf("Could not obtain context info: %s\n", l4sys_errtostr(err));
1.44 - return 1;
1.45 - }
1.46 -
1.47 - /* Map context memory to write the filename. */
1.48 -
1.49 - char *memory;
1.50 -
1.51 - printf("Attach region of size %ld...\n", size);
1.52 -
1.53 - err = ipc_attach_dataspace(context_ref, size, (void **) &memory);
1.54 -
1.55 - if (err)
1.56 - {
1.57 - printf("Could not map memory: %s\n", l4sys_errtostr(err));
1.58 - return 1;
1.59 - }
1.60 -
1.61 - printf("Mapped memory at %p\n", memory);
1.62 -
1.63 /* Write the filename. */
1.64
1.65 - strcpy(memory, filename);
1.66 + strcpy(context.memory, filename);
1.67
1.68 /* Invoke the open method to receive the file reference. */
1.69
1.70 - l4_cap_idx_t file;
1.71 + file_t file;
1.72
1.73 - err = context.open(L4_FPAGE_RW, &size, &file);
1.74 + err = file_open(&file, context.ref);
1.75
1.76 if (err)
1.77 {
1.78 @@ -112,15 +80,9 @@
1.79 return 1;
1.80 }
1.81
1.82 - client_MappedFile obj(file);
1.83 -
1.84 - /* Some memory to be mapped. */
1.85 + /* A region of the file is mapped. */
1.86
1.87 - size_t start_pos, end_pos, data_end;
1.88 -
1.89 - printf("Map region from %ld to %ld...\n", 0L, page(10));
1.90 -
1.91 - err = obj.mmap(0, page(10), &start_pos, &end_pos, &data_end);
1.92 + err = file_mmap(&file, 0, page(10));
1.93
1.94 if (err)
1.95 {
1.96 @@ -128,36 +90,18 @@
1.97 return 1;
1.98 }
1.99
1.100 - printf("Mapped region from %ld to %ld with content %ld.\n",
1.101 - start_pos, end_pos, data_end);
1.102 -
1.103 - size = end_pos - start_pos;
1.104 -
1.105 - printf("Attach region of size %ld...\n", size);
1.106 -
1.107 - err = ipc_attach_dataspace(file, size, (void **) &memory);
1.108 -
1.109 - if (err)
1.110 + for (unsigned long offset = 0; offset < file_span(&file); offset += step)
1.111 {
1.112 - printf("Could not map memory: %s\n", l4sys_errtostr(err));
1.113 - return 1;
1.114 - }
1.115 -
1.116 - printf("Mapped memory at %p\n", memory);
1.117 -
1.118 - if (data_end < size)
1.119 - size = data_end;
1.120 -
1.121 - for (unsigned long offset = 0; offset < size; offset += step)
1.122 - {
1.123 - unsigned long remaining = size - offset;
1.124 + unsigned long remaining = file_span(&file) - offset;
1.125 unsigned long sample_remaining = remaining < sample ? remaining : sample;
1.126
1.127 - printf("%ld bytes from %p...\n", sample_remaining, (memory + offset));
1.128 - strncpy(buf, (memory + offset), sample_remaining);
1.129 + printf("%ld bytes from %p...\n", sample_remaining, (file.memory + offset));
1.130 + strncpy(buf, (file.memory + offset), sample_remaining);
1.131 buf[sample_remaining] = '\0';
1.132 printf("%s\n", buf);
1.133 }
1.134
1.135 return 0;
1.136 }
1.137 +
1.138 +// vim: tabstop=2 expandtab shiftwidth=2