1 #include <l4/re/protocols.h> /* L4RE_PROTO_RM */ 2 3 /* A region mapper/manager interface. */ 4 5 [protocol(L4RE_PROTO_RM)] 6 interface RegionMapper 7 { 8 /* Attach the memory associated with a dataspace, employing the given start 9 address to search for a suitable address for the region. */ 10 11 [opcode(0)] void attach(inout l4_addr_t start, in unsigned long size, 12 in unsigned long flags, in cap ds, 13 in l4_addr_t offset, in unsigned char align); 14 15 /* Detach memory from the task, searching from the given address for a region 16 of the given size. Return the start address, region size and dataspace. */ 17 18 [opcode(1)] void detach(in l4_addr_t addr, in unsigned long size, 19 in unsigned long flags, out l4_addr_t start, 20 out unsigned long rsize, out cap ds); 21 22 /* Find a region starting from the given address and having the given size. 23 Return the start address, region size and dataspace. */ 24 25 [opcode(2)] void find(inout l4_addr_t addr, inout unsigned long size, 26 out unsigned long flags, out l4_addr_t offset, 27 out cap ds); 28 29 /* Reserve an area in the region map. */ 30 31 [opcode(3)] void reserve_area(inout l4_addr_t start, in unsigned long size, 32 in unsigned long flags, in unsigned char align); 33 34 /* Free (or unreserve) an area in the region map. */ 35 36 [opcode(4)] void free_area(in l4_addr_t addr); 37 38 /* Currently not fully supported by the interface generator... 39 40 [opcode(5)] void get_regions(in l4_addr_t start, out Region[] regions); 41 42 [opcode(6)] void get_areas(in l4_addr_t start, out Area[] areas); 43 44 See pkg/l4re-core/l4re/include/rm for the Region and Area structures. */ 45 };