cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

auto_dev-ioctl.h (4997B)


      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 _UAPI_LINUX_AUTO_DEV_IOCTL_H
     12#define _UAPI_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
     28struct args_protover {
     29	__u32	version;
     30};
     31
     32struct args_protosubver {
     33	__u32	sub_version;
     34};
     35
     36struct args_openmount {
     37	__u32	devid;
     38};
     39
     40struct args_ready {
     41	__u32	token;
     42};
     43
     44struct args_fail {
     45	__u32	token;
     46	__s32	status;
     47};
     48
     49struct args_setpipefd {
     50	__s32	pipefd;
     51};
     52
     53struct args_timeout {
     54	__u64	timeout;
     55};
     56
     57struct args_requester {
     58	__u32	uid;
     59	__u32	gid;
     60};
     61
     62struct args_expire {
     63	__u32	how;
     64};
     65
     66struct args_askumount {
     67	__u32	may_umount;
     68};
     69
     70struct 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
     89struct 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[0];
    113};
    114
    115static 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
    124enum {
    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	/* _UAPI_LINUX_AUTO_DEV_IOCTL_H */