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