zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

auto_dev-ioctl.h (4984B) - Raw


      1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
      2 /*
      3  * Copyright 2008 Red Hat, Inc. All rights reserved.
      4  * Copyright 2008 Ian Kent <raven@themaw.net>
      5  *
      6  * This file is part of the Linux kernel and is made available under
      7  * the terms of the GNU General Public License, version 2, or at your
      8  * option, any later version, incorporated herein by reference.
      9  */
     10 
     11 #ifndef _LINUX_AUTO_DEV_IOCTL_H
     12 #define _LINUX_AUTO_DEV_IOCTL_H
     13 
     14 #include <linux/auto_fs.h>
     15 #include <linux/string.h>
     16 
     17 #define AUTOFS_DEVICE_NAME		"autofs"
     18 
     19 #define AUTOFS_DEV_IOCTL_VERSION_MAJOR	1
     20 #define AUTOFS_DEV_IOCTL_VERSION_MINOR	1
     21 
     22 #define AUTOFS_DEV_IOCTL_SIZE		sizeof(struct autofs_dev_ioctl)
     23 
     24 /*
     25  * An ioctl interface for autofs mount point control.
     26  */
     27 
     28 struct args_protover {
     29 	__u32	version;
     30 };
     31 
     32 struct args_protosubver {
     33 	__u32	sub_version;
     34 };
     35 
     36 struct args_openmount {
     37 	__u32	devid;
     38 };
     39 
     40 struct args_ready {
     41 	__u32	token;
     42 };
     43 
     44 struct args_fail {
     45 	__u32	token;
     46 	__s32	status;
     47 };
     48 
     49 struct args_setpipefd {
     50 	__s32	pipefd;
     51 };
     52 
     53 struct args_timeout {
     54 	__u64	timeout;
     55 };
     56 
     57 struct args_requester {
     58 	__u32	uid;
     59 	__u32	gid;
     60 };
     61 
     62 struct args_expire {
     63 	__u32	how;
     64 };
     65 
     66 struct args_askumount {
     67 	__u32	may_umount;
     68 };
     69 
     70 struct args_ismountpoint {
     71 	union {
     72 		struct args_in {
     73 			__u32	type;
     74 		} in;
     75 		struct args_out {
     76 			__u32	devid;
     77 			__u32	magic;
     78 		} out;
     79 	};
     80 };
     81 
     82 /*
     83  * All the ioctls use this structure.
     84  * When sending a path size must account for the total length
     85  * of the chunk of memory otherwise it is the size of the
     86  * structure.
     87  */
     88 
     89 struct autofs_dev_ioctl {
     90 	__u32 ver_major;
     91 	__u32 ver_minor;
     92 	__u32 size;		/* total size of data passed in
     93 				 * including this struct */
     94 	__s32 ioctlfd;		/* automount command fd */
     95 
     96 	/* Command parameters */
     97 
     98 	union {
     99 		struct args_protover		protover;
    100 		struct args_protosubver		protosubver;
    101 		struct args_openmount		openmount;
    102 		struct args_ready		ready;
    103 		struct args_fail		fail;
    104 		struct args_setpipefd		setpipefd;
    105 		struct args_timeout		timeout;
    106 		struct args_requester		requester;
    107 		struct args_expire		expire;
    108 		struct args_askumount		askumount;
    109 		struct args_ismountpoint	ismountpoint;
    110 	};
    111 
    112 	char path[];
    113 };
    114 
    115 static __inline__ void init_autofs_dev_ioctl(struct autofs_dev_ioctl *in)
    116 {
    117 	memset(in, 0, AUTOFS_DEV_IOCTL_SIZE);
    118 	in->ver_major = AUTOFS_DEV_IOCTL_VERSION_MAJOR;
    119 	in->ver_minor = AUTOFS_DEV_IOCTL_VERSION_MINOR;
    120 	in->size = AUTOFS_DEV_IOCTL_SIZE;
    121 	in->ioctlfd = -1;
    122 }
    123 
    124 enum {
    125 	/* Get various version info */
    126 	AUTOFS_DEV_IOCTL_VERSION_CMD = 0x71,
    127 	AUTOFS_DEV_IOCTL_PROTOVER_CMD,
    128 	AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD,
    129 
    130 	/* Open mount ioctl fd */
    131 	AUTOFS_DEV_IOCTL_OPENMOUNT_CMD,
    132 
    133 	/* Close mount ioctl fd */
    134 	AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD,
    135 
    136 	/* Mount/expire status returns */
    137 	AUTOFS_DEV_IOCTL_READY_CMD,
    138 	AUTOFS_DEV_IOCTL_FAIL_CMD,
    139 
    140 	/* Activate/deactivate autofs mount */
    141 	AUTOFS_DEV_IOCTL_SETPIPEFD_CMD,
    142 	AUTOFS_DEV_IOCTL_CATATONIC_CMD,
    143 
    144 	/* Expiry timeout */
    145 	AUTOFS_DEV_IOCTL_TIMEOUT_CMD,
    146 
    147 	/* Get mount last requesting uid and gid */
    148 	AUTOFS_DEV_IOCTL_REQUESTER_CMD,
    149 
    150 	/* Check for eligible expire candidates */
    151 	AUTOFS_DEV_IOCTL_EXPIRE_CMD,
    152 
    153 	/* Request busy status */
    154 	AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD,
    155 
    156 	/* Check if path is a mountpoint */
    157 	AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD,
    158 };
    159 
    160 #define AUTOFS_DEV_IOCTL_VERSION \
    161 	_IOWR(AUTOFS_IOCTL, \
    162 	      AUTOFS_DEV_IOCTL_VERSION_CMD, struct autofs_dev_ioctl)
    163 
    164 #define AUTOFS_DEV_IOCTL_PROTOVER \
    165 	_IOWR(AUTOFS_IOCTL, \
    166 	      AUTOFS_DEV_IOCTL_PROTOVER_CMD, struct autofs_dev_ioctl)
    167 
    168 #define AUTOFS_DEV_IOCTL_PROTOSUBVER \
    169 	_IOWR(AUTOFS_IOCTL, \
    170 	      AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD, struct autofs_dev_ioctl)
    171 
    172 #define AUTOFS_DEV_IOCTL_OPENMOUNT \
    173 	_IOWR(AUTOFS_IOCTL, \
    174 	      AUTOFS_DEV_IOCTL_OPENMOUNT_CMD, struct autofs_dev_ioctl)
    175 
    176 #define AUTOFS_DEV_IOCTL_CLOSEMOUNT \
    177 	_IOWR(AUTOFS_IOCTL, \
    178 	      AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD, struct autofs_dev_ioctl)
    179 
    180 #define AUTOFS_DEV_IOCTL_READY \
    181 	_IOWR(AUTOFS_IOCTL, \
    182 	      AUTOFS_DEV_IOCTL_READY_CMD, struct autofs_dev_ioctl)
    183 
    184 #define AUTOFS_DEV_IOCTL_FAIL \
    185 	_IOWR(AUTOFS_IOCTL, \
    186 	      AUTOFS_DEV_IOCTL_FAIL_CMD, struct autofs_dev_ioctl)
    187 
    188 #define AUTOFS_DEV_IOCTL_SETPIPEFD \
    189 	_IOWR(AUTOFS_IOCTL, \
    190 	      AUTOFS_DEV_IOCTL_SETPIPEFD_CMD, struct autofs_dev_ioctl)
    191 
    192 #define AUTOFS_DEV_IOCTL_CATATONIC \
    193 	_IOWR(AUTOFS_IOCTL, \
    194 	      AUTOFS_DEV_IOCTL_CATATONIC_CMD, struct autofs_dev_ioctl)
    195 
    196 #define AUTOFS_DEV_IOCTL_TIMEOUT \
    197 	_IOWR(AUTOFS_IOCTL, \
    198 	      AUTOFS_DEV_IOCTL_TIMEOUT_CMD, struct autofs_dev_ioctl)
    199 
    200 #define AUTOFS_DEV_IOCTL_REQUESTER \
    201 	_IOWR(AUTOFS_IOCTL, \
    202 	      AUTOFS_DEV_IOCTL_REQUESTER_CMD, struct autofs_dev_ioctl)
    203 
    204 #define AUTOFS_DEV_IOCTL_EXPIRE \
    205 	_IOWR(AUTOFS_IOCTL, \
    206 	      AUTOFS_DEV_IOCTL_EXPIRE_CMD, struct autofs_dev_ioctl)
    207 
    208 #define AUTOFS_DEV_IOCTL_ASKUMOUNT \
    209 	_IOWR(AUTOFS_IOCTL, \
    210 	      AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD, struct autofs_dev_ioctl)
    211 
    212 #define AUTOFS_DEV_IOCTL_ISMOUNTPOINT \
    213 	_IOWR(AUTOFS_IOCTL, \
    214 	      AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD, struct autofs_dev_ioctl)
    215 
    216 #endif	/* _LINUX_AUTO_DEV_IOCTL_H */