[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

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