1 #include <l4/re/protocols.h> /* L4RE_PROTO_DATASPACE */ 2 #include <systypes/base.h> /* 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 11 [opcode(0)] void map(in offset_t offset, in address_t hot_spot, 12 in map_flags_t flags, out fpage region); 13 14 /* Clear a dataspace. */ 15 16 [opcode(1)] void clear(in address_t offset, in offset_t size); 17 18 /* Obtain statistics about a dataspace. */ 19 20 [opcode(2)] void info(out offset_t size, out map_flags_t flags); 21 22 /* Copy data between dataspaces. */ 23 24 [opcode(3)] void copy_in(in address_t dest_offset, in cap source, 25 in address_t source_offset, in offset_t size); 26 27 /* Deprecated: take a reference to a dataspace. */ 28 29 [opcode(4)] void take(); 30 31 /* Deprecated: release a reference to a dataspace. */ 32 33 [opcode(5)] void release(); 34 35 /* Obtain the physical address of the given offset in a dataspace, along with 36 the largest physically contiguous region at or after the address in the 37 dataspace. */ 38 39 [opcode(6)] void phys(in address_t offset, out address_t address, out l4_size_t size); 40 41 /* Allocate at least the given size at the given address in a dataspace. */ 42 43 [opcode(7)] void allocate(in address_t offset, in l4_size_t size); 44 };