# HG changeset patch # User Paul Boddie # Date 1663023126 -7200 # Node ID a15b1f4bdf92cfd0ec641ee1a21895fc1d0270f5 # Parent cc9d32844703ff1fb9f09eea4f774594e3f5234e Fixed ambiguity around 64-bit types; introduced a distinct map address type. Removed obsolete dataspace operations since these now seem to have disappeared from L4Re. diff -r cc9d32844703 -r a15b1f4bdf92 libfsclient/lib/src/file.cc --- a/libfsclient/lib/src/file.cc Tue Sep 13 00:47:33 2022 +0200 +++ b/libfsclient/lib/src/file.cc Tue Sep 13 00:52:06 2022 +0200 @@ -255,7 +255,7 @@ client_Opener opener(server); offset_t size; - flags_t flags; + map_flags_t flags; long err; file_init(file); diff -r cc9d32844703 -r a15b1f4bdf92 libfsserver/include/fsserver/file_pager.h --- a/libfsserver/include/fsserver/file_pager.h Tue Sep 13 00:47:33 2022 +0200 +++ b/libfsserver/include/fsserver/file_pager.h Tue Sep 13 00:52:06 2022 +0200 @@ -71,7 +71,7 @@ /* Pager and mapped file methods. */ - virtual long map(offset_t offset, address_t hot_spot, map_flags_t flags, + virtual long map(offset_t offset, map_address_t hot_spot, map_flags_t flags, l4_snd_fpage_t *region); virtual long mmap(offset_t position, offset_t length, diff -r cc9d32844703 -r a15b1f4bdf92 libfsserver/include/fsserver/ipc.h --- a/libfsserver/include/fsserver/ipc.h Tue Sep 13 00:47:33 2022 +0200 +++ b/libfsserver/include/fsserver/ipc.h Tue Sep 13 00:52:06 2022 +0200 @@ -28,7 +28,7 @@ long ipc_prepare_flexpage(Flexpage *flexpage, offset_t offset, - offset_t max_offset, address_t hot_spot, + offset_t max_offset, map_address_t hot_spot, map_flags_t flags, l4_snd_fpage_t *region); void ipc_unmap_flexpage(Flexpage *flexpage); diff -r cc9d32844703 -r a15b1f4bdf92 libfsserver/include/fsserver/opener_context_resource.h --- a/libfsserver/include/fsserver/opener_context_resource.h Tue Sep 13 00:47:33 2022 +0200 +++ b/libfsserver/include/fsserver/opener_context_resource.h Tue Sep 13 00:52:06 2022 +0200 @@ -70,11 +70,11 @@ /* Pager/dataspace methods. */ - long map(unsigned long offset, address_t hot_spot, map_flags_t flags, + long map(offset_t offset, map_address_t hot_spot, map_flags_t flags, l4_snd_fpage_t *region) { return SimplePager::map(offset, hot_spot, flags, region); } - long info(unsigned long *size, unsigned long *flags) + long info(offset_t *size, map_flags_t *flags) { return SimplePager::info(size, flags); } }; diff -r cc9d32844703 -r a15b1f4bdf92 libfsserver/include/fsserver/pager.h --- a/libfsserver/include/fsserver/pager.h Tue Sep 13 00:47:33 2022 +0200 +++ b/libfsserver/include/fsserver/pager.h Tue Sep 13 00:52:06 2022 +0200 @@ -44,7 +44,7 @@ /* Paging methods. */ - virtual long map(offset_t offset, address_t hot_spot, map_flags_t map_flags, + virtual long map(offset_t offset, map_address_t hot_spot, map_flags_t map_flags, l4_snd_fpage_t *region); /* Limit methods. */ diff -r cc9d32844703 -r a15b1f4bdf92 libfsserver/include/fsserver/pipe_pager.h --- a/libfsserver/include/fsserver/pipe_pager.h Tue Sep 13 00:47:33 2022 +0200 +++ b/libfsserver/include/fsserver/pipe_pager.h Tue Sep 13 00:52:06 2022 +0200 @@ -60,7 +60,7 @@ /* Pager methods. */ - virtual long map(offset_t offset, address_t hot_spot, map_flags_t flags, l4_snd_fpage_t *region); + virtual long map(offset_t offset, map_address_t hot_spot, map_flags_t flags, l4_snd_fpage_t *region); /* Pipe methods. */ diff -r cc9d32844703 -r a15b1f4bdf92 libfsserver/include/fsserver/simple_pager.h --- a/libfsserver/include/fsserver/simple_pager.h Tue Sep 13 00:47:33 2022 +0200 +++ b/libfsserver/include/fsserver/simple_pager.h Tue Sep 13 00:52:06 2022 +0200 @@ -43,7 +43,7 @@ /* Paging methods. */ - long map(offset_t offset, address_t hot_spot, map_flags_t flags, l4_snd_fpage_t *region); + long map(offset_t offset, map_address_t hot_spot, map_flags_t flags, l4_snd_fpage_t *region); long info(offset_t *size, map_flags_t *flags); }; diff -r cc9d32844703 -r a15b1f4bdf92 libfsserver/lib/files/file_pager.cc --- a/libfsserver/lib/files/file_pager.cc Tue Sep 13 00:47:33 2022 +0200 +++ b/libfsserver/lib/files/file_pager.cc Tue Sep 13 00:52:06 2022 +0200 @@ -129,7 +129,7 @@ /* Generic pager operations. */ -long FilePager::map(offset_t offset, address_t hot_spot, map_flags_t map_flags, l4_snd_fpage_t *region) +long FilePager::map(offset_t offset, map_address_t hot_spot, map_flags_t map_flags, l4_snd_fpage_t *region) { return Pager::map(offset, hot_spot, map_flags, region); } diff -r cc9d32844703 -r a15b1f4bdf92 libfsserver/lib/generic/pager.cc --- a/libfsserver/lib/generic/pager.cc Tue Sep 13 00:47:33 2022 +0200 +++ b/libfsserver/lib/generic/pager.cc Tue Sep 13 00:52:06 2022 +0200 @@ -114,7 +114,7 @@ /* Map a flexpage corresponding to the dataspace 'offset' involving a 'hot_spot' (flexpage offset). */ -long Pager::map(offset_t offset, address_t hot_spot, map_flags_t map_flags, +long Pager::map(offset_t offset, map_address_t hot_spot, map_flags_t map_flags, l4_snd_fpage_t *region) { offset_t file_offset = _start + offset; diff -r cc9d32844703 -r a15b1f4bdf92 libfsserver/lib/generic/simple_pager.cc --- a/libfsserver/lib/generic/simple_pager.cc Tue Sep 13 00:47:33 2022 +0200 +++ b/libfsserver/lib/generic/simple_pager.cc Tue Sep 13 00:52:06 2022 +0200 @@ -51,7 +51,7 @@ /* Map a flexpage corresponding to the dataspace 'offset' involving a 'hot_spot' (flexpage offset). */ -long SimplePager::map(offset_t offset, address_t hot_spot, map_flags_t flags, l4_snd_fpage_t *region) +long SimplePager::map(offset_t offset, map_address_t hot_spot, map_flags_t flags, l4_snd_fpage_t *region) { Flexpage flexpage(_region); diff -r cc9d32844703 -r a15b1f4bdf92 libfsserver/lib/mapping/ipc.cc --- a/libfsserver/lib/mapping/ipc.cc Tue Sep 13 00:47:33 2022 +0200 +++ b/libfsserver/lib/mapping/ipc.cc Tue Sep 13 00:52:06 2022 +0200 @@ -44,7 +44,7 @@ /* Make a representation of a flexpage for the IPC system. */ long ipc_prepare_flexpage(Flexpage *flexpage, offset_t offset, - offset_t max_offset, address_t hot_spot, + offset_t max_offset, map_address_t hot_spot, map_flags_t flags, l4_snd_fpage_t *region) { SendFlexpage send_flexpage = flexpage->to_send(offset, hot_spot, flags, diff -r cc9d32844703 -r a15b1f4bdf92 libfsserver/lib/pipes/pipe_pager.cc --- a/libfsserver/lib/pipes/pipe_pager.cc Tue Sep 13 00:47:33 2022 +0200 +++ b/libfsserver/lib/pipes/pipe_pager.cc Tue Sep 13 00:52:06 2022 +0200 @@ -81,7 +81,7 @@ /* Support paging. */ -long PipePager::map(offset_t offset, address_t hot_spot, map_flags_t flags, l4_snd_fpage_t *region) +long PipePager::map(offset_t offset, map_address_t hot_spot, map_flags_t flags, l4_snd_fpage_t *region) { return Pager::map(offset, hot_spot, flags, region); } diff -r cc9d32844703 -r a15b1f4bdf92 libsystypes/idl/dataspace.idl --- a/libsystypes/idl/dataspace.idl Tue Sep 13 00:47:33 2022 +0200 +++ b/libsystypes/idl/dataspace.idl Tue Sep 13 00:52:06 2022 +0200 @@ -1,5 +1,5 @@ #include /* L4RE_PROTO_DATASPACE */ -#include /* address_t, offset_t */ +#include /* map_address_t, offset_t */ /* A dataspace interface. */ @@ -8,12 +8,12 @@ { /* Map memory within a dataspace. */ - [opcode(0)] void map(in offset_t offset, in address_t hot_spot, + [opcode(0)] void map(in offset_t offset, in map_address_t hot_spot, in map_flags_t flags, out fpage region); /* Clear a dataspace. */ - [opcode(1)] void clear(in address_t offset, in offset_t size); + [opcode(1)] void clear(in offset_t offset, in offset_t size); /* Obtain statistics about a dataspace. */ @@ -21,24 +21,10 @@ /* Copy data between dataspaces. */ - [opcode(3)] void copy_in(in address_t dest_offset, in cap source, - in address_t source_offset, in offset_t size); - - /* Deprecated: take a reference to a dataspace. */ - - [opcode(4)] void take(); - - /* Deprecated: release a reference to a dataspace. */ - - [opcode(5)] void release(); - - /* Obtain the physical address of the given offset in a dataspace, along with - the largest physically contiguous region at or after the address in the - dataspace. */ - - [opcode(6)] void phys(in address_t offset, out address_t address, out l4_size_t size); + [opcode(3)] void copy_in(in offset_t dest_offset, in cap source, + in offset_t source_offset, in offset_t size); /* Allocate at least the given size at the given address in a dataspace. */ - [opcode(7)] void allocate(in address_t offset, in l4_size_t size); + [opcode(6)] void allocate(in offset_t offset, in l4_size_t size); }; diff -r cc9d32844703 -r a15b1f4bdf92 libsystypes/include/systypes/base.h --- a/libsystypes/include/systypes/base.h Tue Sep 13 00:47:33 2022 +0200 +++ b/libsystypes/include/systypes/base.h Tue Sep 13 00:52:06 2022 +0200 @@ -27,23 +27,21 @@ EXTERN_C_BEGIN -/* unsigned long is a 64-bit type. - See: pkg/l4re-core/l4sys/include/l4int.h */ - /* Types for file access (access flags, offsets) and IPC operations. */ -typedef unsigned long flags_t; /* see systypes/fcntl.h */ -typedef unsigned long offset_t; +typedef l4_uint64_t flags_t; /* see systypes/fcntl.h */ +typedef l4_uint64_t offset_t; typedef l4_addr_t address_t; /* unsigned long */ /* Dataspace mapping flags. See: pkg/l4re-core/l4re_c/include/dataspace.h */ -typedef unsigned long map_flags_t; /* 64-bit */ +typedef l4_uint64_t map_address_t; +typedef unsigned long map_flags_t; /* Types and values for notification. */ -typedef unsigned long notify_flags_t; +typedef l4_uint64_t notify_flags_t; enum notify_flags {