1*ec9afb42Spho /* $NetBSD: chan.h,v 1.1 2022/01/22 08:09:40 pho Exp $ */ 2*ec9afb42Spho 3*ec9afb42Spho /* 4*ec9afb42Spho * Copyright (c) 2021 The NetBSD Foundation, Inc. 5*ec9afb42Spho * All rights reserved. 6*ec9afb42Spho * 7*ec9afb42Spho * Redistribution and use in source and binary forms, with or without 8*ec9afb42Spho * modification, are permitted provided that the following conditions 9*ec9afb42Spho * are met: 10*ec9afb42Spho * 1. Redistributions of source code must retain the above copyright 11*ec9afb42Spho * notice, this list of conditions and the following disclaimer. 12*ec9afb42Spho * 2. Redistributions in binary form must reproduce the above copyright 13*ec9afb42Spho * notice, this list of conditions and the following disclaimer in the 14*ec9afb42Spho * documentation and/or other materials provided with the distribution. 15*ec9afb42Spho * 3. The name of the author may not be used to endorse or promote 16*ec9afb42Spho * products derived from this software without specific prior written 17*ec9afb42Spho * permission. 18*ec9afb42Spho * 19*ec9afb42Spho * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 20*ec9afb42Spho * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21*ec9afb42Spho * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22*ec9afb42Spho * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 23*ec9afb42Spho * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24*ec9afb42Spho * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 25*ec9afb42Spho * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26*ec9afb42Spho * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 27*ec9afb42Spho * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28*ec9afb42Spho * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29*ec9afb42Spho * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30*ec9afb42Spho */ 31*ec9afb42Spho #if !defined(_FUSE_CHAN_H_) 32*ec9afb42Spho #define _FUSE_CHAN_H_ 33*ec9afb42Spho 34*ec9afb42Spho /* 35*ec9afb42Spho * Fuse communication channel API, appeared on FUSE 2.4. 36*ec9afb42Spho */ 37*ec9afb42Spho 38*ec9afb42Spho #if !defined(FUSE_H_) 39*ec9afb42Spho # error Do not include this header directly. Include <fuse.h> instead. 40*ec9afb42Spho #endif 41*ec9afb42Spho 42*ec9afb42Spho #include <stdbool.h> 43*ec9afb42Spho #include <stddef.h> 44*ec9afb42Spho #include <sys/cdefs.h> 45*ec9afb42Spho 46*ec9afb42Spho #ifdef __cplusplus 47*ec9afb42Spho extern "C" { 48*ec9afb42Spho #endif 49*ec9afb42Spho 50*ec9afb42Spho /* An opaque object representing a communication channel. */ 51*ec9afb42Spho struct fuse_chan; 52*ec9afb42Spho 53*ec9afb42Spho /* Implementation details. User code should never call these functions 54*ec9afb42Spho * directly. */ 55*ec9afb42Spho struct fuse; 56*ec9afb42Spho struct fuse_args; 57*ec9afb42Spho __BEGIN_HIDDEN_DECLS 58*ec9afb42Spho struct fuse_chan* fuse_chan_new(const char* mountpoint, const struct fuse_args* args); 59*ec9afb42Spho void fuse_chan_destroy(struct fuse_chan* chan); 60*ec9afb42Spho 61*ec9afb42Spho int fuse_chan_stash(struct fuse_chan* chan); 62*ec9afb42Spho struct fuse_chan* fuse_chan_peek(int idx); 63*ec9afb42Spho struct fuse_chan* fuse_chan_take(int idx); 64*ec9afb42Spho struct fuse_chan* fuse_chan_find(bool (*pred)(struct fuse_chan* chan, void* priv), 65*ec9afb42Spho int* found_idx, void* priv); 66*ec9afb42Spho 67*ec9afb42Spho void fuse_chan_set_fuse(struct fuse_chan* chan, struct fuse* fuse); 68*ec9afb42Spho void fuse_chan_set_to_be_destroyed(struct fuse_chan* chan, bool is_to_be_destroyed); 69*ec9afb42Spho 70*ec9afb42Spho const char* fuse_chan_mountpoint(const struct fuse_chan* chan); 71*ec9afb42Spho struct fuse_args* fuse_chan_args(struct fuse_chan* chan); 72*ec9afb42Spho struct fuse* fuse_chan_fuse(struct fuse_chan* chan); 73*ec9afb42Spho bool fuse_chan_is_to_be_destroyed(const struct fuse_chan* chan); 74*ec9afb42Spho __END_HIDDEN_DECLS 75*ec9afb42Spho 76*ec9afb42Spho #ifdef __cplusplus 77*ec9afb42Spho } 78*ec9afb42Spho #endif 79*ec9afb42Spho 80*ec9afb42Spho #endif 81