1 #pragma once 2 3 #include <systypes/base.h> 4 5 #include "page_mapper.h" 6 #include "resource.h" 7 8 9 10 /* A pager exposing a dataspace. */ 11 12 class Pager : public Resource 13 { 14 protected: 15 offset_t _start, _size; 16 PageMapper *_mapper; 17 flags_t _flags; 18 19 public: 20 explicit Pager(PageMapper *mapper, flags_t flags); 21 22 virtual void close(); 23 24 /* Paging methods. */ 25 26 virtual long map(offset_t offset, l4_addr_t hot_spot, flags_t flags, l4_snd_fpage_t *region); 27 28 /* Limit methods. */ 29 30 offset_t get_data_size(); 31 32 /* File methods. */ 33 34 virtual long flush(offset_t populated_size, offset_t *size); 35 36 virtual long resize(offset_t *size); 37 38 /* Mapped file methods. */ 39 40 virtual long mmap(offset_t position, offset_t length, offset_t *start_pos, offset_t *end_pos, offset_t *data_end); 41 }; 42 43 // vim: tabstop=4 expandtab shiftwidth=4