LCOV - code coverage report
Current view: top level - lkbce/include/linux - auto_fs4.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 14 21 66.7 %
Date: 2017-01-25 Functions: 4 8 50.0 %

          Line data    Source code
       1             : /* -*- c -*-
       2             :  * linux/include/linux/auto_fs4.h
       3             :  *
       4             :  * Copyright 1999-2000 Jeremy Fitzhardinge <jeremy@goop.org>
       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_FS4_H
      12             : #define _LINUX_AUTO_FS4_H
      13             : 
      14             : /* Include common v3 definitions */
      15             : #include <linux/types.h>
      16             : #include <linux/auto_fs.h>
      17             : 
      18             : /* autofs v4 definitions */
      19             : #undef AUTOFS_PROTO_VERSION
      20             : #undef AUTOFS_MIN_PROTO_VERSION
      21             : #undef AUTOFS_MAX_PROTO_VERSION
      22             : 
      23             : #define AUTOFS_PROTO_VERSION            5
      24             : #define AUTOFS_MIN_PROTO_VERSION        3
      25             : #define AUTOFS_MAX_PROTO_VERSION        5
      26             : 
      27             : #define AUTOFS_PROTO_SUBVERSION         1
      28             : 
      29             : /* Mask for expire behaviour */
      30             : #define AUTOFS_EXP_IMMEDIATE            1
      31             : #define AUTOFS_EXP_LEAVES               2
      32             : 
      33             : #define AUTOFS_TYPE_ANY                 0U
      34             : #define AUTOFS_TYPE_INDIRECT            1U
      35             : #define AUTOFS_TYPE_DIRECT              2U
      36             : #define AUTOFS_TYPE_OFFSET              4U
      37             : 
      38             : static inline void set_autofs_type_indirect(unsigned int *type)
      39             : {
      40           0 :         *type = AUTOFS_TYPE_INDIRECT;
      41           0 :         return;
      42             : }
      43             : 
      44             : static inline unsigned int autofs_type_indirect(unsigned int type)
      45             : {
      46           9 :         return (type == AUTOFS_TYPE_INDIRECT);
      47             : }
      48             : 
      49             : static inline void set_autofs_type_direct(unsigned int *type)
      50             : {
      51           0 :         *type = AUTOFS_TYPE_DIRECT;
      52           0 :         return;
      53             : }
      54             : 
      55             : static inline unsigned int autofs_type_direct(unsigned int type)
      56             : {
      57           1 :         return (type == AUTOFS_TYPE_DIRECT);
      58             : }
      59             : 
      60             : static inline void set_autofs_type_offset(unsigned int *type)
      61             : {
      62           0 :         *type = AUTOFS_TYPE_OFFSET;
      63           0 :         return;
      64             : }
      65             : 
      66             : static inline unsigned int autofs_type_offset(unsigned int type)
      67             : {
      68           1 :         return (type == AUTOFS_TYPE_OFFSET);
      69             : }
      70             : 
      71             : static inline unsigned int autofs_type_trigger(unsigned int type)
      72             : {
      73         204 :         return (type == AUTOFS_TYPE_DIRECT || type == AUTOFS_TYPE_OFFSET);
      74             : }
      75             : 
      76             : /*
      77             :  * This isn't really a type as we use it to say "no type set" to
      78             :  * indicate we want to search for "any" mount in the
      79             :  * autofs_dev_ioctl_ismountpoint() device ioctl function.
      80             :  */
      81             : static inline void set_autofs_type_any(unsigned int *type)
      82             : {
      83             :         *type = AUTOFS_TYPE_ANY;
      84             :         return;
      85             : }
      86             : 
      87             : static inline unsigned int autofs_type_any(unsigned int type)
      88             : {
      89           0 :         return (type == AUTOFS_TYPE_ANY);
      90             : }
      91           1 : 
      92             : /* Daemon notification packet types */
      93             : enum autofs_notify {
      94             :         NFY_NONE,
      95             :         NFY_MOUNT,
      96             :         NFY_EXPIRE
      97           1 : };
      98             : 
      99             : /* Kernel protocol version 4 packet types */
     100             : 
     101             : /* Expire entry (umount request) */
     102             : #define autofs_ptype_expire_multi       2
     103             : 
     104             : /* Kernel protocol version 5 packet types */
     105             : 
     106             : /* Indirect mount missing and expire requests. */
     107             : #define autofs_ptype_missing_indirect   3
     108             : #define autofs_ptype_expire_indirect    4
     109             : 
     110             : /* Direct mount missing and expire requests */
     111             : #define autofs_ptype_missing_direct     5
     112             : #define autofs_ptype_expire_direct      6
     113             : 
     114             : /* v4 multi expire (via pipe) */
     115             : struct autofs_packet_expire_multi {
     116             :         struct autofs_packet_hdr hdr;
     117             :         autofs_wqt_t wait_queue_token;
     118             :         int len;
     119             :         char name[NAME_MAX+1];
     120             : };
     121           1 : 
     122             : union autofs_packet_union {
     123             :         struct autofs_packet_hdr hdr;
     124             :         struct autofs_packet_missing missing;
     125             :         struct autofs_packet_expire expire;
     126             :         struct autofs_packet_expire_multi expire_multi;
     127             : };
     128           1 : 
     129             : /* autofs v5 common packet struct */
     130             : struct autofs_v5_packet {
     131             :         struct autofs_packet_hdr hdr;
     132             :         autofs_wqt_t wait_queue_token;
     133             :         __u32 dev;
     134             :         __u64 ino;
     135             :         __u32 uid;
     136             :         __u32 gid;
     137             :         __u32 pid;
     138             :         __u32 tgid;
     139             :         __u32 len;
     140             :         char name[NAME_MAX+1];
     141             : };
     142             : 
     143           1 : typedef struct autofs_v5_packet autofs_packet_missing_indirect_t;
     144           1 : typedef struct autofs_v5_packet autofs_packet_expire_indirect_t;
     145           1 : typedef struct autofs_v5_packet autofs_packet_missing_direct_t;
     146           1 : typedef struct autofs_v5_packet autofs_packet_expire_direct_t;
     147           1 : 
     148             : union autofs_v5_packet_union {
     149             :         struct autofs_packet_hdr hdr;
     150             :         struct autofs_v5_packet v5_packet;
     151             :         autofs_packet_missing_indirect_t missing_indirect;
     152             :         autofs_packet_expire_indirect_t expire_indirect;
     153             :         autofs_packet_missing_direct_t missing_direct;
     154             :         autofs_packet_expire_direct_t expire_direct;
     155             : };
     156           1 : 
     157             : #define AUTOFS_IOC_EXPIRE_MULTI         _IOW(0x93,0x66,int)
     158             : #define AUTOFS_IOC_EXPIRE_INDIRECT      AUTOFS_IOC_EXPIRE_MULTI
     159             : #define AUTOFS_IOC_EXPIRE_DIRECT        AUTOFS_IOC_EXPIRE_MULTI
     160             : #define AUTOFS_IOC_PROTOSUBVER          _IOR(0x93,0x67,int)
     161             : #define AUTOFS_IOC_ASKUMOUNT            _IOR(0x93,0x70,int)
     162             : 
     163             : 
     164             : #endif /* _LINUX_AUTO_FS4_H */

Generated by: LCOV version 1.10