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