1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/files/opener_context_resource.h Mon Mar 29 00:04:07 2021 +0200
1.3 @@ -0,0 +1,51 @@
1.4 +#pragma once
1.5 +
1.6 +#include "opener_context_object_interface.h"
1.7 +#include "simple_pager.h"
1.8 +
1.9 +
1.10 +
1.11 +/* Forward declaration. */
1.12 +
1.13 +class OpenerResource;
1.14 +
1.15 +
1.16 +
1.17 +/* Support for indicating files to be opened. */
1.18 +
1.19 +class OpenerContextResource : public SimplePager, public OpenerContextObject
1.20 +{
1.21 +protected:
1.22 + OpenerResource *_opener;
1.23 +
1.24 +public:
1.25 + explicit OpenerContextResource(OpenerResource *opener, Memory *memory=NULL);
1.26 +
1.27 + /* Server details. */
1.28 +
1.29 + int expected_items();
1.30 +
1.31 + ipc_server_handler_type handler();
1.32 +
1.33 + void *interface()
1.34 + { return static_cast<OpenerContextObject *>(this); }
1.35 +
1.36 + /* Data access methods. */
1.37 +
1.38 + char *get_path();
1.39 +
1.40 + /* Opener context interface methods. */
1.41 +
1.42 + long open(flags_t flags, size_t *size, l4_cap_idx_t *file);
1.43 +
1.44 + /* Pager/dataspace methods. */
1.45 +
1.46 + long map(unsigned long offset, l4_addr_t hot_spot, flags_t flags,
1.47 + l4_snd_fpage_t *region)
1.48 + { return SimplePager::map(offset, hot_spot, flags, region); }
1.49 +
1.50 + long info(unsigned long *size, unsigned long *flags)
1.51 + { return SimplePager::info(size, flags); }
1.52 +};
1.53 +
1.54 +// vim: tabstop=4 expandtab shiftwidth=4