1 #pragma once 2 3 #include "memory.h" 4 #include "pipe_opener_interface.h" 5 #include "pipe_paging.h" 6 #include "resource.h" 7 8 /* Support for providing access to pipes. */ 9 10 class PipeOpenerResource : public Resource, public PipeOpener 11 { 12 protected: 13 Memory *_memory; 14 15 long open_endpoint(PipePaging *paging, bool writing, l4_cap_idx_t *endpoint); 16 17 public: 18 explicit PipeOpenerResource(Memory *memory); 19 20 explicit PipeOpenerResource(); 21 22 /* Server details. */ 23 24 int expected_items(); 25 26 ipc_server_handler_type handler(); 27 28 void *interface() 29 { return static_cast<PipeOpener *>(this); } 30 31 /* PipeOpener interface methods. */ 32 33 long pipe(offset_t size, l4_cap_idx_t *reader, l4_cap_idx_t *writer); 34 }; 35 36 // vim: tabstop=4 expandtab shiftwidth=4