The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/fs/fuse/fuse.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 2007-2009 Google Inc.
    3  * All rights reserved.
    4  * 
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions are
    7  * met:
    8  * 
    9  * * Redistributions of source code must retain the above copyright
   10  *   notice, this list of conditions and the following disclaimer.
   11  * * Redistributions in binary form must reproduce the above
   12  *   copyright notice, this list of conditions and the following disclaimer
   13  *   in the documentation and/or other materials provided with the
   14  *   distribution.
   15  * * Neither the name of Google Inc. nor the names of its
   16  *   contributors may be used to endorse or promote products derived from
   17  *   this software without specific prior written permission.
   18  * 
   19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   20  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   21  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   22  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
   23  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   24  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   25  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   29  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   30  * 
   31  * Copyright (C) 2005 Csaba Henk.
   32  * All rights reserved.
   33  * 
   34  * Redistribution and use in source and binary forms, with or without
   35  * modification, are permitted provided that the following conditions
   36  * are met:
   37  * 1. Redistributions of source code must retain the above copyright
   38  *    notice, this list of conditions and the following disclaimer.
   39  * 2. Redistributions in binary form must reproduce the above copyright
   40  *    notice, this list of conditions and the following disclaimer in the
   41  *    documentation and/or other materials provided with the distribution.
   42  * 
   43  * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   44  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   45  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   46  * ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
   47  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   48  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   49  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   50  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   51  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   52  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   53  * SUCH DAMAGE.
   54  *
   55  * $FreeBSD$
   56  */
   57 
   58 #include "fuse_kernel.h"
   59 
   60 #define FUSE_DEFAULT_DAEMON_TIMEOUT                60     /* s */
   61 #define FUSE_MIN_DAEMON_TIMEOUT                    0      /* s */
   62 #define FUSE_MAX_DAEMON_TIMEOUT                    600    /* s */
   63 
   64 #ifndef FUSE_FREEBSD_VERSION
   65 #define FUSE_FREEBSD_VERSION    "0.4.4"
   66 #endif
   67 
   68 /* Mapping versions to features */
   69 
   70 #define FUSE_KERNELABI_GEQ(maj, min)    \
   71 (FUSE_KERNEL_VERSION > (maj) || (FUSE_KERNEL_VERSION == (maj) && FUSE_KERNEL_MINOR_VERSION >= (min)))
   72 
   73 /*
   74  * Appearance of new FUSE operations is not always in par with version
   75  * numbering... At least, 7.3 is a sufficient condition for having
   76  * FUSE_{ACCESS,CREATE}.
   77  */
   78 #if FUSE_KERNELABI_GEQ(7, 3)
   79 #ifndef FUSE_HAS_ACCESS
   80 #define FUSE_HAS_ACCESS 1
   81 #endif
   82 #ifndef FUSE_HAS_CREATE
   83 #define FUSE_HAS_CREATE 1
   84 #endif
   85 #else /* FUSE_KERNELABI_GEQ(7, 3) */
   86 #ifndef FUSE_HAS_ACCESS
   87 #define FUSE_HAS_ACCESS 0
   88 #endif
   89 #ifndef FUSE_HAS_CREATE
   90 #define FUSE_HAS_CREATE 0
   91 #endif
   92 #endif
   93 
   94 #if FUSE_KERNELABI_GEQ(7, 7)
   95 #ifndef FUSE_HAS_GETLK
   96 #define FUSE_HAS_GETLK 1
   97 #endif
   98 #ifndef FUSE_HAS_SETLK
   99 #define FUSE_HAS_SETLK 1
  100 #endif
  101 #ifndef FUSE_HAS_SETLKW
  102 #define FUSE_HAS_SETLKW 1
  103 #endif
  104 #ifndef FUSE_HAS_INTERRUPT
  105 #define FUSE_HAS_INTERRUPT 1
  106 #endif
  107 #else /* FUSE_KERNELABI_GEQ(7, 7) */
  108 #ifndef FUSE_HAS_GETLK
  109 #define FUSE_HAS_GETLK 0
  110 #endif
  111 #ifndef FUSE_HAS_SETLK
  112 #define FUSE_HAS_SETLK 0
  113 #endif
  114 #ifndef FUSE_HAS_SETLKW
  115 #define FUSE_HAS_SETLKW 0
  116 #endif
  117 #ifndef FUSE_HAS_INTERRUPT
  118 #define FUSE_HAS_INTERRUPT 0
  119 #endif
  120 #endif
  121 
  122 #if FUSE_KERNELABI_GEQ(7, 8)
  123 #ifndef FUSE_HAS_FLUSH_RELEASE
  124 #define FUSE_HAS_FLUSH_RELEASE 1
  125 /*
  126  * "DESTROY" came in the middle of the 7.8 era,
  127  * so this is not completely exact...
  128  */
  129 #ifndef FUSE_HAS_DESTROY
  130 #define FUSE_HAS_DESTROY 1
  131 #endif
  132 #endif
  133 #else /* FUSE_KERNELABI_GEQ(7, 8) */
  134 #ifndef FUSE_HAS_FLUSH_RELEASE
  135 #define FUSE_HAS_FLUSH_RELEASE 0
  136 #ifndef FUSE_HAS_DESTROY
  137 #define FUSE_HAS_DESTROY 0
  138 #endif
  139 #endif
  140 #endif
  141 
  142 /* misc */
  143 
  144 SYSCTL_DECL(_vfs_fuse);
  145 
  146 /* Fuse locking */
  147 
  148 extern struct mtx fuse_mtx;
  149 #define FUSE_LOCK() fuse_lck_mtx_lock(fuse_mtx)
  150 #define FUSE_UNLOCK() fuse_lck_mtx_unlock(fuse_mtx)
  151 
  152 #define RECTIFY_TDCR(td, cred)                  \
  153 do {                                            \
  154         if (! (td))                             \
  155                 (td) = curthread;               \
  156         if (! (cred))                           \
  157                 (cred) = (td)->td_ucred;        \
  158 } while (0)
  159 
  160 /* Debug related stuff */
  161 
  162 #ifndef FUSE_DEBUG_DEVICE
  163 #define FUSE_DEBUG_DEVICE               0
  164 #endif
  165 
  166 #ifndef FUSE_DEBUG_FILE
  167 #define FUSE_DEBUG_FILE                 0
  168 #endif
  169 
  170 #ifndef FUSE_DEBUG_INTERNAL
  171 #define FUSE_DEBUG_INTERNAL             0
  172 #endif
  173 
  174 #ifndef FUSE_DEBUG_IO
  175 #define FUSE_DEBUG_IO                   0
  176 #endif
  177 
  178 #ifndef FUSE_DEBUG_IPC
  179 #define FUSE_DEBUG_IPC                  0
  180 #endif
  181 
  182 #ifndef FUSE_DEBUG_LOCK
  183 #define FUSE_DEBUG_LOCK                 0
  184 #endif
  185 
  186 #ifndef FUSE_DEBUG_VFSOPS
  187 #define FUSE_DEBUG_VFSOPS               0
  188 #endif
  189 
  190 #ifndef FUSE_DEBUG_VNOPS
  191 #define FUSE_DEBUG_VNOPS                0
  192 #endif
  193 
  194 #ifndef FUSE_TRACE
  195 #define FUSE_TRACE                      0
  196 #endif
  197 
  198 #define DEBUGX(cond, fmt, ...) do {                     \
  199     if (((cond))) {                                     \
  200         printf("%s: " fmt, __func__, ## __VA_ARGS__);   \
  201     } } while (0)
  202 
  203 #define fuse_lck_mtx_lock(mtx) do {                                     \
  204     DEBUGX(FUSE_DEBUG_LOCK, "0:   lock(%s): %s@%d by %d\n",             \
  205         __STRING(mtx), __func__, __LINE__, curthread->td_proc->p_pid);  \
  206     mtx_lock(&(mtx));                                                   \
  207     DEBUGX(FUSE_DEBUG_LOCK, "1:   lock(%s): %s@%d by %d\n",             \
  208         __STRING(mtx), __func__, __LINE__, curthread->td_proc->p_pid);  \
  209     } while (0)
  210 
  211 #define fuse_lck_mtx_unlock(mtx) do {                                   \
  212     DEBUGX(FUSE_DEBUG_LOCK, "0: unlock(%s): %s@%d by %d\n",             \
  213         __STRING(mtx), __func__, __LINE__, curthread->td_proc->p_pid);  \
  214     mtx_unlock(&(mtx));                                                 \
  215     DEBUGX(FUSE_DEBUG_LOCK, "1: unlock(%s): %s@%d by %d\n",             \
  216         __STRING(mtx), __func__, __LINE__, curthread->td_proc->p_pid);  \
  217     } while (0)
  218 
  219 void fuse_ipc_init(void);
  220 void fuse_ipc_destroy(void);
  221 
  222 int fuse_device_init(void);
  223 void fuse_device_destroy(void);

Cache object: af55fbb232cec948f5e0e872b6eedc9d


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.