LCOV - code coverage report
Current view: top level - shared/linux - auto_dev-ioctl.h (source / functions) Hit Total Coverage
Test: main_coverage.info Lines: 0 7 0.0 %
Date: 2019-08-22 15:41:25 Functions: 0 1 0.0 %

          Line data    Source code
       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  0
      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 is 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[0];
     113             : };
     114             : 
     115           0 : static inline void init_autofs_dev_ioctl(struct autofs_dev_ioctl *in)
     116             : {
     117           0 :         memset(in, 0, AUTOFS_DEV_IOCTL_SIZE);
     118           0 :         in->ver_major = AUTOFS_DEV_IOCTL_VERSION_MAJOR;
     119           0 :         in->ver_minor = AUTOFS_DEV_IOCTL_VERSION_MINOR;
     120           0 :         in->size = AUTOFS_DEV_IOCTL_SIZE;
     121           0 :         in->ioctlfd = -1;
     122           0 : }
     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             : #ifndef AUTOFS_IOCTL
     161             : #define AUTOFS_IOCTL 0x93
     162             : #endif
     163             : 
     164             : #define AUTOFS_DEV_IOCTL_VERSION \
     165             :         _IOWR(AUTOFS_IOCTL, \
     166             :               AUTOFS_DEV_IOCTL_VERSION_CMD, struct autofs_dev_ioctl)
     167             : 
     168             : #define AUTOFS_DEV_IOCTL_PROTOVER \
     169             :         _IOWR(AUTOFS_IOCTL, \
     170             :               AUTOFS_DEV_IOCTL_PROTOVER_CMD, struct autofs_dev_ioctl)
     171             : 
     172             : #define AUTOFS_DEV_IOCTL_PROTOSUBVER \
     173             :         _IOWR(AUTOFS_IOCTL, \
     174             :               AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD, struct autofs_dev_ioctl)
     175             : 
     176             : #define AUTOFS_DEV_IOCTL_OPENMOUNT \
     177             :         _IOWR(AUTOFS_IOCTL, \
     178             :               AUTOFS_DEV_IOCTL_OPENMOUNT_CMD, struct autofs_dev_ioctl)
     179             : 
     180             : #define AUTOFS_DEV_IOCTL_CLOSEMOUNT \
     181             :         _IOWR(AUTOFS_IOCTL, \
     182             :               AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD, struct autofs_dev_ioctl)
     183             : 
     184             : #define AUTOFS_DEV_IOCTL_READY \
     185             :         _IOWR(AUTOFS_IOCTL, \
     186             :               AUTOFS_DEV_IOCTL_READY_CMD, struct autofs_dev_ioctl)
     187             : 
     188             : #define AUTOFS_DEV_IOCTL_FAIL \
     189             :         _IOWR(AUTOFS_IOCTL, \
     190             :               AUTOFS_DEV_IOCTL_FAIL_CMD, struct autofs_dev_ioctl)
     191             : 
     192             : #define AUTOFS_DEV_IOCTL_SETPIPEFD \
     193             :         _IOWR(AUTOFS_IOCTL, \
     194             :               AUTOFS_DEV_IOCTL_SETPIPEFD_CMD, struct autofs_dev_ioctl)
     195             : 
     196             : #define AUTOFS_DEV_IOCTL_CATATONIC \
     197             :         _IOWR(AUTOFS_IOCTL, \
     198             :               AUTOFS_DEV_IOCTL_CATATONIC_CMD, struct autofs_dev_ioctl)
     199             : 
     200             : #define AUTOFS_DEV_IOCTL_TIMEOUT \
     201             :         _IOWR(AUTOFS_IOCTL, \
     202             :               AUTOFS_DEV_IOCTL_TIMEOUT_CMD, struct autofs_dev_ioctl)
     203             : 
     204             : #define AUTOFS_DEV_IOCTL_REQUESTER \
     205             :         _IOWR(AUTOFS_IOCTL, \
     206             :               AUTOFS_DEV_IOCTL_REQUESTER_CMD, struct autofs_dev_ioctl)
     207             : 
     208             : #define AUTOFS_DEV_IOCTL_EXPIRE \
     209             :         _IOWR(AUTOFS_IOCTL, \
     210             :               AUTOFS_DEV_IOCTL_EXPIRE_CMD, struct autofs_dev_ioctl)
     211             : 
     212             : #define AUTOFS_DEV_IOCTL_ASKUMOUNT \
     213             :         _IOWR(AUTOFS_IOCTL, \
     214             :               AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD, struct autofs_dev_ioctl)
     215             : 
     216             : #define AUTOFS_DEV_IOCTL_ISMOUNTPOINT \
     217             :         _IOWR(AUTOFS_IOCTL, \
     218             :               AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD, struct autofs_dev_ioctl)
     219             : 
     220             : #endif  /* _UAPI_LINUX_AUTO_DEV_IOCTL_H */

Generated by: LCOV version 1.14