1 #include <l4/re/protocols.h> /* L4RE_PROTO_DATASPACE */ 2 #include <systypes/base.h> /* map_address_t, offset_t */ 3 4 /* A dataspace interface. */ 5 6 [protocol(L4RE_PROTO_DATASPACE)] 7 interface Dataspace 8 { 9 /* Map memory within a dataspace. 10 NOTE: Using opcode_type to work around L4Re dataspace IPC issues. */ 11 12 [opcode(0),opcode_type(l4_uint64_t)] void map(in offset_t offset, in map_address_t hot_spot, 13 in map_flags_t flags, out fpage region); 14 15 /* Clear a dataspace. */ 16 17 [opcode(1)] void clear(in offset_t offset, in offset_t size); 18 19 /* Obtain statistics about a dataspace. */ 20 21 [opcode(2)] void info(out offset_t size, out map_flags_t flags); 22 23 /* Copy data between dataspaces. */ 24 25 [opcode(3)] void copy_in(in offset_t dest_offset, in cap source, 26 in offset_t source_offset, in offset_t size); 27 28 /* Allocate at least the given size at the given address in a dataspace. */ 29 30 [opcode(6)] void allocate(in offset_t offset, in l4_size_t size); 31 };