paul@181 | 1 | #include <l4/re/protocols.h> /* L4RE_PROTO_DATASPACE */ |
paul@410 | 2 | #include <systypes/base.h> /* map_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@410 | 11 | [opcode(0)] void map(in offset_t offset, in map_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@410 | 16 | [opcode(1)] void clear(in offset_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@410 | 24 | [opcode(3)] void copy_in(in offset_t dest_offset, in cap source, |
paul@410 | 25 | in offset_t source_offset, in offset_t size); |
paul@181 | 26 | |
paul@181 | 27 | /* Allocate at least the given size at the given address in a dataspace. */ |
paul@181 | 28 | |
paul@410 | 29 | [opcode(6)] void allocate(in offset_t offset, in l4_size_t size); |
paul@181 | 30 | }; |