1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/pipes/pipe_opener_resource.h Sat Mar 27 01:42:25 2021 +0100
1.3 @@ -0,0 +1,36 @@
1.4 +#pragma once
1.5 +
1.6 +#include "memory.h"
1.7 +#include "pipe_opener_interface.h"
1.8 +#include "pipe_paging.h"
1.9 +#include "resource.h"
1.10 +
1.11 +/* Support for providing access to pipes. */
1.12 +
1.13 +class PipeOpenerResource : public Resource, public PipeOpener
1.14 +{
1.15 +protected:
1.16 + Memory *_memory;
1.17 +
1.18 + long open_endpoint(PipePaging *paging, bool writing, l4_cap_idx_t *endpoint);
1.19 +
1.20 +public:
1.21 + explicit PipeOpenerResource(Memory *memory);
1.22 +
1.23 + explicit PipeOpenerResource();
1.24 +
1.25 + /* Server details. */
1.26 +
1.27 + int expected_items();
1.28 +
1.29 + ipc_server_handler_type handler();
1.30 +
1.31 + void *interface()
1.32 + { return static_cast<PipeOpener *>(this); }
1.33 +
1.34 + /* PipeOpener interface methods. */
1.35 +
1.36 + long pipe(offset_t size, l4_cap_idx_t *reader, l4_cap_idx_t *writer);
1.37 +};
1.38 +
1.39 +// vim: tabstop=4 expandtab shiftwidth=4