1 #include <l4/re/c/dataspace.h> 2 3 #include "dataspace_server.h" 4 #include "ipc.h" 5 #include "simple_pager.h" 6 7 8 9 SimplePager::SimplePager(Memory *memory) 10 { 11 if (memory == NULL) 12 _memory = new Memory(); 13 else 14 _memory = memory; 15 16 _region = _memory->region(); 17 } 18 19 void SimplePager::close() 20 { 21 if (_region != NULL) 22 { 23 _memory->release(_region); 24 _region = NULL; 25 } 26 } 27 28 /* Map a flexpage corresponding to the dataspace 'offset' involving a 'hot_spot' 29 (flexpage offset). */ 30 31 long SimplePager::map(unsigned long offset, l4_addr_t hot_spot, unsigned long flags, l4_snd_fpage_t *region) 32 { 33 Flexpage flexpage(_region); 34 35 flexpage.reset(offset); 36 37 /* Send the flexpage explicitly. */ 38 39 ipc_prepare_flexpage(&flexpage, offset, hot_spot, flags, region); 40 41 long err = complete_Dataspace_map(*region); 42 43 if (err) 44 return err; 45 46 return IPC_MESSAGE_SENT; 47 } 48 49 // vim: tabstop=4 expandtab shiftwidth=4