X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/43866e378188c25dd1e2208016ab3cbeb086ae6c..8ad349bb6ed4a0be06e34c92be0d98b92e078db4:/bsd/miscfs/union/union.h diff --git a/bsd/miscfs/union/union.h b/bsd/miscfs/union/union.h index f7ee5f221..b603cd14c 100644 --- a/bsd/miscfs/union/union.h +++ b/bsd/miscfs/union/union.h @@ -1,26 +1,31 @@ /* - * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ + * Copyright (c) 2006 Apple Computer, Inc. All Rights Reserved. * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. + * @APPLE_LICENSE_OSREFERENCE_HEADER_START@ * - * This file contains Original Code and/or Modifications of Original Code - * as defined in and that are subject to the Apple Public Source License - * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://www.opensource.apple.com/apsl/ and read it before using this + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the + * License may not be used to create, or enable the creation or + * redistribution of, unlawful or unlicensed copies of an Apple operating + * system, or to circumvent, violate, or enable the circumvention or + * violation of, any terms of an Apple operating system software license + * agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this * file. - * - * The Original Code and all software distributed under the License are - * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER - * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. - * Please see the License for the specific language governing rights and + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and * limitations under the License. - * - * @APPLE_LICENSE_HEADER_END@ + * + * @APPLE_LICENSE_OSREFERENCE_HEADER_END@ */ /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */ /* @@ -65,6 +70,7 @@ #define __UNION_UNION_H__ #include +#include #ifdef __APPLE_API_PRIVATE struct union_args { @@ -86,6 +92,24 @@ struct union_mount { }; #ifdef KERNEL +/* LP64 version of union_args. all pointers + * grow when we're dealing with a 64-bit process. + * WARNING - keep in sync with union_args + */ +/* LP64todo - should this move? */ + +#if __DARWIN_ALIGN_NATURAL +#pragma options align=natural +#endif + +struct user_union_args { + user_addr_t target; /* Target of loopback */ + int mntflags; /* Options on the mount */ +}; + +#if __DARWIN_ALIGN_NATURAL +#pragma options align=reset +#endif /* * DEFDIRMODE is the mode bits used to create a shadow directory. @@ -123,29 +147,26 @@ struct union_node { #define UN_KLOCK 0x08 /* Keep upper node locked on vput */ #define UN_CACHED 0x10 /* In union cache */ -extern int union_allocvp __P((struct vnode **, struct mount *, +extern int union_allocvp(struct vnode **, struct mount *, struct vnode *, struct vnode *, struct componentname *, struct vnode *, - struct vnode *, int)); -extern int union_copyfile __P((struct vnode *, struct vnode *, - struct ucred *, struct proc *)); -extern int union_copyup __P((struct union_node *, int, struct ucred *, - struct proc *)); -extern int union_dowhiteout __P((struct union_node *, struct ucred *, - struct proc *)); -extern int union_mkshadow __P((struct union_mount *, struct vnode *, - struct componentname *, struct vnode **)); -extern int union_mkwhiteout __P((struct union_mount *, struct vnode *, - struct componentname *, char *)); -extern int union_vn_create __P((struct vnode **, struct union_node *, - struct proc *)); -extern int union_cn_close __P((struct vnode *, int, struct ucred *, - struct proc *)); -extern void union_removed_upper __P((struct union_node *un)); -extern struct vnode *union_lowervp __P((struct vnode *)); -extern void union_newlower __P((struct union_node *, struct vnode *)); -extern void union_newupper __P((struct union_node *, struct vnode *)); -extern void union_newsize __P((struct vnode *, off_t, off_t)); + struct vnode *, int); +extern int union_copyfile(struct vnode *, struct vnode *, + struct ucred *, struct proc *); +extern int union_copyup(struct union_node *, int, struct ucred *, + struct proc *); +extern int union_dowhiteout(struct union_node *, vfs_context_t); +extern int union_mkshadow(struct union_mount *, struct vnode *, + struct componentname *, struct vnode **); +extern int union_mkwhiteout(struct union_mount *, struct vnode *, + struct componentname *, char *); +extern int union_vn_create(struct vnode **, struct union_node *, struct proc *); +extern int union_cn_close(struct vnode *, int, struct ucred *, struct proc *); +extern void union_removed_upper(struct union_node *un); +extern struct vnode *union_lowervp(struct vnode *); +extern void union_newlower(struct union_node *, struct vnode *); +extern void union_newupper(struct union_node *, struct vnode *); +extern void union_newsize(struct vnode *, off_t, off_t); #define MOUNTTOUNIONMOUNT(mp) ((struct union_mount *)((mp)->mnt_data)) #define VTOUNION(vp) ((struct union_node *)(vp)->v_data)