1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  23  * Use is subject to license terms.
  24  */
  25 
  26 /*      Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */
  27 /*        All Rights Reserved   */
  28 
  29 /*
  30  * University Copyright- Copyright (c) 1982, 1986, 1988
  31  * The Regents of the University of California
  32  * All Rights Reserved
  33  *
  34  * University Acknowledgment- Portions of this document are derived from
  35  * software developed by the University of California, Berkeley, and its
  36  * contributors.
  37  */
  38 
  39 /*
  40  * Copyright (c) 2013 by Delphix. All rights reserved.
  41  */
  42 
  43 #ifndef _SYS_FILIO_H
  44 #define _SYS_FILIO_H
  45 
  46 /*
  47  * General file ioctl definitions.
  48  */
  49 
  50 #include <sys/ioccom.h>
  51 
  52 #ifdef  __cplusplus
  53 extern "C" {
  54 #endif
  55 
  56 #define FIOCLEX         _IO('f', 1)             /* set exclusive use on fd */
  57 #define FIONCLEX        _IO('f', 2)             /* remove exclusive use */
  58 /* another local */
  59 #define FIONREAD        _IOR('f', 127, int)     /* get # bytes to read */
  60 #define FIONBIO         _IOW('f', 126, int)     /* set/clear non-blocking i/o */
  61 #define FIOASYNC        _IOW('f', 125, int)     /* set/clear async i/o */
  62 #define FIOSETOWN       _IOW('f', 124, int)     /* set owner */
  63 #define FIOGETOWN       _IOR('f', 123, int)     /* get owner */
  64 
  65 /*
  66  * ioctl's for Online: DiskSuite.
  67  * WARNING - the support for these ioctls may be withdrawn
  68  * in future OS releases.
  69  */
  70 #define _FIOLFS         _IO('f', 64)            /* file system lock */
  71 #define _FIOLFSS        _IO('f', 65)            /* file system lock status */
  72 #define _FIOFFS         _IO('f', 66)            /* file system flush */
  73 #define _FIOAI          _FIOOBSOLETE67          /* get allocation info is */
  74 #define _FIOOBSOLETE67  _IO('f', 67)            /* obsolete and unsupported */
  75 #define _FIOSATIME      _IO('f', 68)            /* set atime */
  76 #define _FIOSDIO        _IO('f', 69)            /* set delayed io */
  77 #define _FIOGDIO        _IO('f', 70)            /* get delayed io */
  78 #define _FIOIO          _IO('f', 71)            /* inode open */
  79 #define _FIOISLOG       _IO('f', 72)            /* disksuite/ufs protocol */
  80 #define _FIOISLOGOK     _IO('f', 73)            /* disksuite/ufs protocol */
  81 #define _FIOLOGRESET    _IO('f', 74)            /* disksuite/ufs protocol */
  82 
  83 /*
  84  * Contract-private ioctl()
  85  */
  86 #define _FIOISBUSY      _IO('f', 75)            /* networker/ufs protocol */
  87 #define _FIODIRECTIO    _IO('f', 76)            /* directio */
  88 #define _FIOTUNE        _IO('f', 77)            /* tuning */
  89 
  90 /*
  91  * WARNING: These 'f' ioctls are also defined in sys/fs/cachefs_fs.h
  92  * It currently defines 78-86.
  93  */
  94 
  95 /*
  96  * Internal Logging UFS
  97  */
  98 #define _FIOLOGENABLE   _IO('f', 87)            /* logging/ufs protocol */
  99 #define _FIOLOGDISABLE  _IO('f', 88)            /* logging/ufs protocol */
 100 
 101 /*
 102  * File system snapshot ioctls (see sys/fs/ufs_snap.h)
 103  * (there is another snapshot ioctl, _FIOSNAPSHOTCREATE_MULTI,
 104  * defined farther down in this file.)
 105  */
 106 #define _FIOSNAPSHOTCREATE      _IO('f', 89)    /* create a snapshot */
 107 #define _FIOSNAPSHOTDELETE      _IO('f', 90)    /* delete a snapshot */
 108 
 109 /*
 110  * Return the current superblock of size SBSIZE
 111  */
 112 #define _FIOGETSUPERBLOCK       _IO('f', 91)
 113 
 114 /*
 115  * Contract private ioctl
 116  */
 117 #define _FIOGETMAXPHYS          _IO('f', 92)
 118 
 119 /*
 120  * TSufs support
 121  */
 122 #define _FIO_SET_LUFS_DEBUG     _IO('f', 93) /* set lufs_debug */
 123 #define _FIO_SET_LUFS_ERROR     _IO('f', 94) /* set a lufs error */
 124 #define _FIO_GET_TOP_STATS      _IO('f', 95) /* get lufs tranaction stats */
 125 
 126 /*
 127  * create a snapshot with multiple backing files
 128  */
 129 #define _FIOSNAPSHOTCREATE_MULTI        _IO('f', 96)
 130 
 131 /*
 132  * handle lseek SEEK_DATA and SEEK_HOLE for holey file knowledge
 133  */
 134 #define _FIO_SEEK_DATA          _IO('f', 97) /* SEEK_DATA */
 135 #define _FIO_SEEK_HOLE          _IO('f', 98) /* SEEK_HOLE */
 136 
 137 /*
 138  * boot archive compression
 139  */
 140 #define _FIO_COMPRESSED         _IO('f', 99) /* mark file as compressed */
 141 
 142 /*
 143  * Expose fill information through ioctl
 144  */
 145 #define _FIO_COUNT_FILLED       _IO('f', 100)   /* count holes in a file */
 146 
 147 #ifdef  __cplusplus
 148 }
 149 #endif
 150 
 151 #endif  /* _SYS_FILIO_H */