1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/files/file_pager.cc Sat Mar 27 01:42:25 2021 +0100
1.3 @@ -0,0 +1,53 @@
1.4 +#include "file_pager.h"
1.5 +#include "mapped_file_object_server.h"
1.6 +
1.7 +/* Initialise a pager for a file with a unique file identifier and shared page
1.8 + mapper for moderating access to loaded pages. */
1.9 +
1.10 +FilePager::FilePager(fileid_t fileid, PageMapper *mapper, flags_t flags)
1.11 +: Pager(mapper, flags), fileid(fileid)
1.12 +{
1.13 +}
1.14 +
1.15 +int FilePager::expected_items()
1.16 +{
1.17 + return MappedFileObject_expected_items;
1.18 +}
1.19 +
1.20 +ipc_server_handler_type FilePager::handler()
1.21 +{
1.22 + return (ipc_server_handler_type) handle_MappedFileObject;
1.23 +}
1.24 +
1.25 +long FilePager::flush(offset_t populated_size, offset_t *size)
1.26 +{
1.27 + return Pager::flush(populated_size, size);
1.28 +}
1.29 +
1.30 +long FilePager::resize(offset_t *size)
1.31 +{
1.32 + return Pager::resize(size);
1.33 +}
1.34 +
1.35 +long FilePager::mmap(offset_t position, offset_t length, offset_t *start_pos, offset_t *end_pos, offset_t *data_end)
1.36 +{
1.37 + /* Set the limits of the paged region. */
1.38 +
1.39 + Pager::mmap(position, length, start_pos, end_pos, data_end);
1.40 +
1.41 + /* Obtain the amount of the region that is populated with file data. */
1.42 +
1.43 + *data_end = get_data_size() - _start;
1.44 +
1.45 + if (*data_end > _size)
1.46 + *data_end = _size;
1.47 +
1.48 + return L4_EOK;
1.49 +}
1.50 +
1.51 +long FilePager::map(unsigned long offset, l4_addr_t hot_spot, flags_t flags, l4_snd_fpage_t *region)
1.52 +{
1.53 + return Pager::map(offset, hot_spot, flags, region);
1.54 +}
1.55 +
1.56 +// vim: tabstop=4 expandtab shiftwidth=4