LCOV - code coverage report
Current view: top level - lkbce/include/linux - auto_dev-ioctl.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 13 13 100.0 %
Date: 2017-01-25 Functions: 0 0 -

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

Generated by: LCOV version 1.10