root/usr/src/uts/common/sys/mount.h
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */
/*      Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/*        All Rights Reserved   */


/*
 * Copyright 2014 Garrett D'Amore <garrett@damore.org>
 *
 * Copyright (c) 1996, 1999 by Sun Microsystems, Inc.
 * All rights reserved.
 */

#ifndef _SYS_MOUNT_H
#define _SYS_MOUNT_H

#ifdef  __cplusplus
extern "C" {
#endif

/*
 * Flag bits passed to mount(2).
 */
#define MS_RDONLY       0x0001  /* Read-only */
#define MS_FSS          0x0002  /* Old (4-argument) mount (compatibility) */
#define MS_DATA         0x0004  /* 6-argument mount */
#define MS_NOSUID       0x0010  /* Setuid programs disallowed */
#define MS_REMOUNT      0x0020  /* Remount */
#define MS_NOTRUNC      0x0040  /* Return ENAMETOOLONG for long filenames */
#define MS_OVERLAY      0x0080  /* Allow overlay mounts */
#define MS_OPTIONSTR    0x0100  /* Data is a an in/out option string */
#define MS_GLOBAL       0x0200  /* Clustering: Mount into global name space */
#define MS_FORCE        0x0400  /* Forced unmount */
#define MS_NOMNTTAB     0x0800  /* Don't show mount in mnttab */
/*
 * Additional flag bits that domount() is prepared to interpret, but that
 * can't be passed through mount(2).
 */
#define MS_SYSSPACE     0x0008  /* Mounta already in kernel space */
#define MS_NOSPLICE     0x1000  /* Don't splice fs instance into name space */
#define MS_NOCHECK      0x2000  /* Clustering: suppress mount busy checks */
/*
 * MS_CRYPT indicates that encryption keys should be loaded if they are not
 * already available. This is not defined in glibc, but it is never seen by
 * the kernel so it will not cause any problems.
 */
#define MS_CRYPT        0x4000
/*
 * Mask to sift out flag bits allowable from mount(2).
 */
#define MS_MASK \
        (MS_RDONLY|MS_FSS|MS_DATA|MS_NOSUID|MS_REMOUNT|MS_NOTRUNC|MS_OVERLAY|\
            MS_OPTIONSTR|MS_GLOBAL|MS_NOMNTTAB)

/*
 * Mask to sift out flag bits allowable from umount2(2).
 */

#define MS_UMOUNT_MASK  (MS_FORCE)

/*
 * Maximum option string length accepted or returned by mount(2).
 */
#define MAX_MNTOPT_STR  1024    /* max length of mount options string */

#if !defined(_KERNEL)
int mount(const char *, const char *, int, ...);
int umount(const char *);
int umount2(const char *, int);
#endif

#ifdef  __cplusplus
}
#endif

#endif  /* _SYS_MOUNT_H */