[BACK]Return to xfs_locl.h CVS log [TXT][DIR] Up to [local] / sys / xfs

Annotation of sys/xfs/xfs_locl.h, Revision 1.1

1.1     ! nbrk        1: /*
        !             2:  * Copyright (c) 1995 - 2002 Kungliga Tekniska Högskolan
        !             3:  * (Royal Institute of Technology, Stockholm, Sweden).
        !             4:  * All rights reserved.
        !             5:  *
        !             6:  * Redistribution and use in source and binary forms, with or without
        !             7:  * modification, are permitted provided that the following conditions
        !             8:  * are met:
        !             9:  *
        !            10:  * 1. Redistributions of source code must retain the above copyright
        !            11:  *    notice, this list of conditions and the following disclaimer.
        !            12:  *
        !            13:  * 2. Redistributions in binary form must reproduce the above copyright
        !            14:  *    notice, this list of conditions and the following disclaimer in the
        !            15:  *    documentation and/or other materials provided with the distribution.
        !            16:  *
        !            17:  * 3. Neither the name of the Institute nor the names of its contributors
        !            18:  *    may be used to endorse or promote products derived from this software
        !            19:  *    without specific prior written permission.
        !            20:  *
        !            21:  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
        !            22:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            23:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            24:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
        !            25:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            26:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            27:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            28:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            29:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            30:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            31:  * SUCH DAMAGE.
        !            32:  */
        !            33:
        !            34: /* $arla: xfs_locl.h,v 1.72 2003/02/15 16:40:00 lha Exp $ */
        !            35:
        !            36: #ifdef HAVE_CONFIG_H
        !            37: #include <config.h>
        !            38: #else
        !            39: #include <xfs/xfs_config.h>
        !            40: #endif
        !            41:
        !            42: #ifndef RCSID
        !            43: #define RCSID(x)
        !            44: #endif
        !            45:
        !            46: #ifdef __osf__
        !            47:
        !            48: #ifdef __GNUC__
        !            49: #define asm __foo_asm
        !            50: #endif
        !            51: #include <sys/types.h>
        !            52: #include <sys/errno.h>
        !            53: #include <sys/uio.h>
        !            54: #include <machine/cpu.h>
        !            55: #include <sys/conf.h>
        !            56: #include <sys/sysconfig.h>
        !            57: #include <sys/file.h>
        !            58: #include <sys/malloc.h>
        !            59: #include <sys/poll.h>
        !            60: #include <sys/ioctl.h>
        !            61: #include <sys/fcntl.h>
        !            62: #include <sys/vfs_proto.h>
        !            63: #include <io/common/devdriver.h>
        !            64: #include <vm/vm_page.h>
        !            65: #include <vm/vm_vppage.h>
        !            66: #include <vm/vm_ubc.h>
        !            67:
        !            68: typedef short int16_t;
        !            69: typedef unsigned short uint16_t;
        !            70: typedef int int32_t;
        !            71: typedef unsigned int uint32_t;
        !            72:
        !            73: #define VT_AFS VT_ADDON
        !            74: #define MOUNT_NNPFS MOUNT_PC
        !            75:
        !            76: typedef struct nameidata xfs_componentname;
        !            77:
        !            78: /* XXX this is gross, but makes the code considerably more readable */
        !            79: #if 0
        !            80: #define componentname  nameidata
        !            81: #endif
        !            82:
        !            83: #define cn_nameptr     ni_ptr
        !            84: #define cn_namelen     ni_namelen
        !            85: #define cn_hash                ni_hash
        !            86: #define cn_cred                ni_cred
        !            87: #define cn_nameiop     ni_nameiop
        !            88: #define cn_flags       ni_flags
        !            89:
        !            90: #define mnt_stat m_stat
        !            91: #define mnt_flag m_flag
        !            92:
        !            93: #define NDINIT(ndp, op, flags, segflg, namep, p)       \
        !            94:        (ndp)->ni_nameiop = (op) | (flags);             \
        !            95:        (ndp)->ni_segflg = segflg;                      \
        !            96:        (ndp)->ni_dirp = namep;
        !            97:
        !            98: #define LOCKLEAF 0
        !            99:
        !           100: #define FFLAGS(mode) ((mode) - FOPEN)
        !           101:
        !           102: /* 4.4BSD vput does VOP_UNLOCK + vrele, but it seems as if we only
        !           103:    should do a vrele here */
        !           104: #define vput(VP) vrele(VP)
        !           105:
        !           106: #define xfs_uio_to_proc(uiop) (u.u_procp)
        !           107: #define xfs_cnp_to_proc(cnp) (u.u_procp)
        !           108: #define xfs_proc_to_cred(p) ((p)->p_rcred)
        !           109: #define xfs_proc_to_euid(p) ((p)->p_rcred->cr_uid)
        !           110:
        !           111: #define xfs_curproc() (u.u_procp)
        !           112:
        !           113: #define xfs_vop_read VOP_READ
        !           114: #define xfs_vop_write VOP_WRITE
        !           115: #define xfs_vop_getattr(t, attr, cred, proc, error) VOP_GETATTR((t), (attr), (cred), (error))
        !           116: #define xfs_vop_access(dvp, mode, cred, proc, error) VOP_ACCESS((dvp), (mode), (cred), (error))
        !           117:
        !           118: struct vop_generic_args;
        !           119:
        !           120: typedef u_long va_size_t;
        !           121:
        !           122: #else /* !__osf__ */
        !           123:
        !           124: typedef struct componentname xfs_componentname;
        !           125:
        !           126: #include <sys/types.h>
        !           127: #include <sys/param.h>
        !           128: #include <sys/time.h>
        !           129: #include <sys/proc.h>
        !           130: #include <sys/filedesc.h>
        !           131: #include <sys/kernel.h>
        !           132: #ifdef HAVE_SYS_MODULE_H
        !           133: #include <sys/module.h>
        !           134: #endif
        !           135: #include <sys/systm.h>
        !           136: #include <sys/fcntl.h>
        !           137: #ifdef HAVE_SYS_SYSPROTO_H
        !           138: #include <sys/sysproto.h>
        !           139: #endif
        !           140: #include <sys/conf.h>
        !           141: #include <sys/mount.h>
        !           142: #include <sys/exec.h>
        !           143: #ifdef HAVE_SYS_SYSENT_H
        !           144: #include <sys/sysent.h>
        !           145: #endif
        !           146: #ifdef HAVE_SYS_LKM_H
        !           147: #include <sys/lkm.h>
        !           148: #endif
        !           149: #ifdef HAVE_SYS_LOCK_H
        !           150: #include <sys/lock.h>
        !           151: #endif
        !           152: #ifdef HAVE_SYS_MUTEX_H
        !           153: #include <sys/mutex.h>
        !           154: #endif
        !           155: #include <sys/vnode.h>
        !           156: #include <sys/errno.h>
        !           157: #include <sys/file.h>
        !           158: #include <sys/namei.h>
        !           159: #include <sys/dirent.h>
        !           160: #include <sys/ucred.h>
        !           161: #include <sys/selinfo.h>
        !           162: #include <sys/uio.h>
        !           163: #ifdef HAVE_SYS_POLL_H
        !           164: #include <sys/poll.h>
        !           165: #endif
        !           166: #ifdef HAVE_SYS_SIGNALVAR_H
        !           167: #include <sys/signalvar.h>
        !           168: #endif
        !           169: #ifdef HAVE_SYS_INTTYPES_H
        !           170: #include <sys/inttypes.h>
        !           171: #endif
        !           172: #include <sys/syscall.h>
        !           173: #include <sys/queue.h>
        !           174: #include <sys/malloc.h>
        !           175: #ifdef HAVE_SYS_SYSCALLARGS_H
        !           176: #include <sys/syscallargs.h>
        !           177: #endif
        !           178: #ifdef HAVE_SYS_ATTR_H
        !           179: #include <sys/attr.h>
        !           180: #endif
        !           181:
        !           182: #ifdef HAVE_MISCFS_GENFS_GENFS_H
        !           183: #include <miscfs/genfs/genfs.h>
        !           184: #endif
        !           185: #ifdef HAVE_MISCFS_SYNCFS_SYNCFS_H
        !           186: #include <miscfs/syncfs/syncfs.h>
        !           187: #endif
        !           188: #ifndef HAVE_KERNEL_UVM_ONLY
        !           189: #ifdef HAVE_VM_VM_H
        !           190: #include <vm/vm.h>
        !           191: #endif
        !           192: #ifdef HAVE_VM_VM_EXTERN_H
        !           193: #include <vm/vm_extern.h>
        !           194: #endif
        !           195: #ifdef HAVE_VM_VM_ZONE_H
        !           196: #include <vm/vm_zone.h>
        !           197: #endif
        !           198: #ifdef HAVE_VM_VM_OBJECT_H
        !           199: #include <vm/vm_object.h>
        !           200: #endif
        !           201: #endif
        !           202: #ifdef HAVE_UVM_UVM_EXTERN_H
        !           203: #include <uvm/uvm_extern.h>
        !           204: #endif
        !           205: #ifdef HAVE_VM_UMA_H
        !           206: #include <vm/uma.h>
        !           207: #endif
        !           208:
        !           209: #if defined(__APPLE__)
        !           210: #include <machine/machine_routines.h>
        !           211: #include <mach/machine/vm_types.h>
        !           212: #include <sys/ubc.h>
        !           213: void cache_purge(struct vnode *);
        !           214: int cache_lookup(struct vnode *, struct vnode **, struct componentname *);
        !           215: void cache_enter(struct vnode *, struct vnode *, struct componentname *);
        !           216: void cache_purgevfs(struct mount *);
        !           217: #endif
        !           218:
        !           219: #define xfs_vop_read(t, uio, ioflag, cred, error) (error) = VOP_READ((t), (uio), (ioflag), (cred))
        !           220: #define xfs_vop_write(t, uio, ioflag, cred, error) (error) = VOP_WRITE((t), (uio), (ioflag), (cred))
        !           221: #define xfs_vop_getattr(t, attr, cred, proc, error) (error) = VOP_GETATTR((t), (attr), (cred), (proc))
        !           222: #define xfs_vop_access(dvp, mode, cred, proc, error) (error) = VOP_ACCESS((dvp), (mode), (cred), (proc))
        !           223:
        !           224: typedef u_quad_t va_size_t;
        !           225:
        !           226: #endif /* !__osf__ */
        !           227:
        !           228: #ifdef __FreeBSD_version
        !           229: #if __FreeBSD_version < 400000
        !           230: # error This version is unsupported
        !           231: #elif __FreeBSD_version < 440001 || (__FreeBSD_version >= 500000 && __FreeBSD_version < 500023)
        !           232: typedef struct proc d_thread_t;
        !           233: #elif __FreeBSD_version == 500023
        !           234: #   define HAVE_FREEBSD_THREAD
        !           235: typedef struct thread d_thread_t;
        !           236: #elif __FreeBSD_version >= 500024
        !           237: #   define HAVE_FREEBSD_THREAD
        !           238: #endif
        !           239: typedef d_thread_t syscall_d_thread_t;
        !           240: #define syscall_thread_to_thread(x) (x)
        !           241: #else /* !__FreeBSD_version */
        !           242: #if defined(__NetBSD__) && __NetBSD_Version__ >= 106130000
        !           243: typedef struct lwp syscall_d_thread_t;
        !           244: #define syscall_thread_to_thread(x) ((x)->l_proc)
        !           245: #else
        !           246: typedef struct proc syscall_d_thread_t;
        !           247: #define syscall_thread_to_thread(x) (x)
        !           248: #endif
        !           249: typedef struct proc d_thread_t;
        !           250: #endif /* !__FreeBSD_version */
        !           251:
        !           252: #ifdef VV_ROOT
        !           253: #define NNPFS_MAKE_VROOT(v) ((v)->v_vflag |= VV_ROOT) /* FreeBSD 5 */
        !           254: #else
        !           255: #define NNPFS_MAKE_VROOT(v) ((v)->v_flag |= VROOT)
        !           256: #endif
        !           257:
        !           258: #if defined(__NetBSD__) && __NetBSD_Version__ >= 105280000
        !           259: #include <miscfs/genfs/genfs.h>
        !           260: #include <miscfs/genfs/genfs_node.h>
        !           261:
        !           262: struct genfs_ops xfs_genfsops;
        !           263: #endif
        !           264:
        !           265:
        !           266: #if defined(HAVE_FREEBSD_THREAD)
        !           267: #define xfs_uio_to_thread(uiop) ((uiop)->uio_td)
        !           268: #define xfs_cnp_to_thread(cnp) ((cnp)->cn_thread)
        !           269: #define xfs_thread_to_cred(td) ((td)->td_proc->p_ucred)
        !           270: #define xfs_thread_to_euid(td) ((td)->td_proc->p_ucred->cr_uid)
        !           271: #else
        !           272: #define xfs_uio_to_proc(uiop) ((uiop)->uio_procp)
        !           273: #define xfs_cnp_to_proc(cnp) ((cnp)->cn_proc)
        !           274: #define xfs_proc_to_cred(p) ((p)->p_ucred)
        !           275: #define xfs_proc_to_euid(p) ((p)->p_ucred->cr_uid)
        !           276: #endif
        !           277:
        !           278: #if defined(__FreeBSD_version) && __FreeBSD_version >= 500043
        !           279: extern const char *VT_AFS;
        !           280: #endif
        !           281:
        !           282: #if defined(__FreeBSD__)
        !           283: typedef void * xfs_malloc_type;
        !           284: #elif defined(__NetBSD__) && __NetBSD_Version__ >= 106140000 /* 1.6N */
        !           285: typedef struct malloc_type * xfs_malloc_type;
        !           286: #else
        !           287: typedef int xfs_malloc_type;
        !           288: #endif
        !           289:
        !           290: #ifdef __APPLE__
        !           291: #define xfs_curproc() (current_proc())
        !           292: #else
        !           293: #if defined(HAVE_FREEBSD_THREAD)
        !           294: #define xfs_curthread() (curthread)
        !           295: #else
        !           296: #define xfs_curproc() (curproc)
        !           297: #endif
        !           298: #endif
        !           299:
        !           300: #ifdef __osf__
        !           301: #define xfs_pushdirty(vp, cred, p)
        !           302: #else
        !           303: void   xfs_pushdirty(struct vnode *, struct ucred *, d_thread_t *);
        !           304: #endif
        !           305:
        !           306:
        !           307: #if defined(HAVE_UINTPTR_T) /* c99 enviroment */
        !           308: #define xfs_uintptr_t          uintptr_t
        !           309: #else
        !           310: #if defined(_LP64) || defined(alpha) || defined(__alpha__) || defined(__sparc64__) || defined(__sparcv9__)
        !           311: #define xfs_uintptr_t          unsigned long long
        !           312: #else /* !LP64 */
        !           313: #define xfs_uintptr_t          unsigned long
        !           314: #endif /* LP64 */
        !           315: #endif
        !           316:
        !           317: /*
        !           318:  * XXX
        !           319:  */
        !           320:
        !           321: #ifndef SCARG
        !           322: #if defined(__FreeBSD_version) && __FreeBSD_version >  500042
        !           323: #define SCARG(a, b) ((a)->b)
        !           324: #define syscallarg(x)   x
        !           325: #else
        !           326: #define SCARG(a, b) ((a)->b.datum)
        !           327: #define syscallarg(x)   union { x datum; register_t pad; }
        !           328: #endif /* __FreeBSD_version */
        !           329: #endif /* SCARG */
        !           330:
        !           331: #ifndef syscallarg
        !           332: #define syscallarg(x)   x
        !           333: #endif
        !           334:
        !           335: #ifndef HAVE_REGISTER_T
        !           336: typedef int register_t;
        !           337: #endif
        !           338:
        !           339: /* malloc(9) waits by default, freebsd post 5.0 choose to remove the flag */
        !           340: #ifndef M_WAITOK
        !           341: #define M_WAITOK 0
        !           342: #endif
        !           343:
        !           344: #if defined(HAVE_DEF_STRUCT_SETGROUPS_ARGS)
        !           345: #define xfs_setgroups_args setgroups_args
        !           346: #elif defined(HAVE_DEF_STRUCT_SYS_SETGROUPS_ARGS)
        !           347: #define xfs_setgroups_args sys_setgroups_args
        !           348: #elif __osf__
        !           349: struct xfs_setgroups_args {
        !           350:     syscallarg(int) gidsetsize;
        !           351:     syscallarg(gid_t) *gidset;
        !           352: };
        !           353: #elif defined(__APPLE__)
        !           354: struct xfs_setgroups_args{
        !           355:         syscallarg(u_int)   gidsetsize;
        !           356:         syscallarg(gid_t)   *gidset;
        !           357: };
        !           358: #else
        !           359: #error what is you setgroups named ?
        !           360: #endif
        !           361:
        !           362:
        !           363: #ifdef HAVE_KERNEL_VFS_GETVFS
        !           364: #define xfs_vfs_getvfs vfs_getvfs
        !           365: #else
        !           366: #define xfs_vfs_getvfs getvfs
        !           367: #endif
        !           368:
        !           369: #ifdef HAVE_FOUR_ARGUMENT_VFS_OBJECT_CREATE
        !           370: #define xfs_vfs_object_create(vp,proc,ucred) vfs_object_create(vp,proc,ucred,TRUE)
        !           371: #else
        !           372: #define xfs_vfs_object_create(vp,proc,ucred) vfs_object_create(vp,proc,ucred)
        !           373: #endif
        !           374:
        !           375: #if  defined(UVM) || (defined(__NetBSD__) && __NetBSD_Version__ >= 105280000)
        !           376: #define xfs_set_vp_size(vp, sz) uvm_vnp_setsize(vp, sz)
        !           377: #elif HAVE_KERNEL_VNODE_PAGER_SETSIZE
        !           378: #define xfs_set_vp_size(vp, sz) vnode_pager_setsize(vp, sz)
        !           379: #elif defined(__APPLE__)
        !           380: #define xfs_set_vp_size(vp, sz) ubc_setsize(vp, sz)
        !           381: #else
        !           382: #define xfs_set_vp_size(vp, sz)
        !           383: #endif
        !           384:
        !           385: /* namei flag */
        !           386: #ifdef LOCKLEAF
        !           387: #define NNPFS_LOCKLEAF LOCKLEAF
        !           388: #else
        !           389: #define NNPFS_LOCKLEAF 0
        !           390: #endif
        !           391:
        !           392: #ifdef NEED_VGONEL_PROTO
        !           393: void    vgonel (struct vnode *vp, d_thread_t *p);
        !           394: #endif
        !           395:
        !           396: #ifdef NEED_ISSIGNAL_PROTO
        !           397: int    issignal (d_thread_t *);
        !           398: #endif
        !           399:
        !           400: #ifdef NEED_STRNCMP_PROTO
        !           401: int    strncmp (const char *, const char *, size_t);
        !           402: #endif
        !           403:
        !           404: #ifdef NEED_VN_WRITECHK_PROTO
        !           405: int    vn_writechk (struct vnode *);
        !           406: #endif
        !           407:
        !           408: #ifdef NEED_UBC_PUSHDIRTY_PROTO
        !           409: int     ubc_pushdirty (struct vnode *);
        !           410: #endif
        !           411:
        !           412: #include <xfs/xfs_syscalls.h>
        !           413:
        !           414: /*
        !           415:  *  The VOP table
        !           416:  *
        !           417:  *    What VOPs do we have today ?
        !           418:  */
        !           419:
        !           420: #define NNPFS_VOP_DEF(n)       \
        !           421:        struct vop_##n##_args; \
        !           422:        int xfs_##n(struct vop_##n##_args *);
        !           423:
        !           424: #include "xfs/xfs_vopdefs.h"

CVSweb