~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/fs/nilfs2/sysfs.h

Version: ~ [ linux-5.16 ] ~ [ linux-5.15.13 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.90 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.170 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.224 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.261 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.296 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.298 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.18.140 ] ~ [ linux-3.16.85 ] ~ [ linux-3.14.79 ] ~ [ linux-3.12.74 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * sysfs.h - sysfs support declarations.
  3  *
  4  * Copyright (C) 2005-2014 Nippon Telegraph and Telephone Corporation.
  5  * Copyright (C) 2014 HGST, Inc., a Western Digital Company.
  6  *
  7  * This program is free software; you can redistribute it and/or modify
  8  * it under the terms of the GNU General Public License as published by
  9  * the Free Software Foundation; either version 2 of the License, or
 10  * (at your option) any later version.
 11  *
 12  * This program is distributed in the hope that it will be useful,
 13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 15  * GNU General Public License for more details.
 16  *
 17  * Written by Vyacheslav Dubeyko <Vyacheslav.Dubeyko@hgst.com>
 18  */
 19 
 20 #ifndef _NILFS_SYSFS_H
 21 #define _NILFS_SYSFS_H
 22 
 23 #include <linux/sysfs.h>
 24 
 25 #define NILFS_ROOT_GROUP_NAME   "nilfs2"
 26 
 27 /*
 28  * struct nilfs_sysfs_dev_subgroups - device subgroup kernel objects
 29  * @sg_superblock_kobj: /sys/fs/<nilfs>/<device>/superblock
 30  * @sg_superblock_kobj_unregister: completion state
 31  * @sg_segctor_kobj: /sys/fs/<nilfs>/<device>/segctor
 32  * @sg_segctor_kobj_unregister: completion state
 33  * @sg_mounted_snapshots_kobj: /sys/fs/<nilfs>/<device>/mounted_snapshots
 34  * @sg_mounted_snapshots_kobj_unregister: completion state
 35  * @sg_checkpoints_kobj: /sys/fs/<nilfs>/<device>/checkpoints
 36  * @sg_checkpoints_kobj_unregister: completion state
 37  * @sg_segments_kobj: /sys/fs/<nilfs>/<device>/segments
 38  * @sg_segments_kobj_unregister: completion state
 39  */
 40 struct nilfs_sysfs_dev_subgroups {
 41         /* /sys/fs/<nilfs>/<device>/superblock */
 42         struct kobject sg_superblock_kobj;
 43         struct completion sg_superblock_kobj_unregister;
 44 
 45         /* /sys/fs/<nilfs>/<device>/segctor */
 46         struct kobject sg_segctor_kobj;
 47         struct completion sg_segctor_kobj_unregister;
 48 
 49         /* /sys/fs/<nilfs>/<device>/mounted_snapshots */
 50         struct kobject sg_mounted_snapshots_kobj;
 51         struct completion sg_mounted_snapshots_kobj_unregister;
 52 
 53         /* /sys/fs/<nilfs>/<device>/checkpoints */
 54         struct kobject sg_checkpoints_kobj;
 55         struct completion sg_checkpoints_kobj_unregister;
 56 
 57         /* /sys/fs/<nilfs>/<device>/segments */
 58         struct kobject sg_segments_kobj;
 59         struct completion sg_segments_kobj_unregister;
 60 };
 61 
 62 #define NILFS_COMMON_ATTR_STRUCT(name) \
 63 struct nilfs_##name##_attr { \
 64         struct attribute attr; \
 65         ssize_t (*show)(struct kobject *, struct attribute *, \
 66                         char *); \
 67         ssize_t (*store)(struct kobject *, struct attribute *, \
 68                          const char *, size_t); \
 69 };
 70 
 71 NILFS_COMMON_ATTR_STRUCT(feature);
 72 
 73 #define NILFS_DEV_ATTR_STRUCT(name) \
 74 struct nilfs_##name##_attr { \
 75         struct attribute attr; \
 76         ssize_t (*show)(struct nilfs_##name##_attr *, struct the_nilfs *, \
 77                         char *); \
 78         ssize_t (*store)(struct nilfs_##name##_attr *, struct the_nilfs *, \
 79                          const char *, size_t); \
 80 };
 81 
 82 NILFS_DEV_ATTR_STRUCT(dev);
 83 NILFS_DEV_ATTR_STRUCT(segments);
 84 NILFS_DEV_ATTR_STRUCT(mounted_snapshots);
 85 NILFS_DEV_ATTR_STRUCT(checkpoints);
 86 NILFS_DEV_ATTR_STRUCT(superblock);
 87 NILFS_DEV_ATTR_STRUCT(segctor);
 88 
 89 #define NILFS_CP_ATTR_STRUCT(name) \
 90 struct nilfs_##name##_attr { \
 91         struct attribute attr; \
 92         ssize_t (*show)(struct nilfs_##name##_attr *, struct nilfs_root *, \
 93                         char *); \
 94         ssize_t (*store)(struct nilfs_##name##_attr *, struct nilfs_root *, \
 95                          const char *, size_t); \
 96 };
 97 
 98 NILFS_CP_ATTR_STRUCT(snapshot);
 99 
100 #define NILFS_ATTR(type, name, mode, show, store) \
101         static struct nilfs_##type##_attr nilfs_##type##_attr_##name = \
102                 __ATTR(name, mode, show, store)
103 
104 #define NILFS_INFO_ATTR(type, name) \
105         NILFS_ATTR(type, name, 0444, NULL, NULL)
106 #define NILFS_RO_ATTR(type, name) \
107         NILFS_ATTR(type, name, 0444, nilfs_##type##_##name##_show, NULL)
108 #define NILFS_RW_ATTR(type, name) \
109         NILFS_ATTR(type, name, 0644, \
110                     nilfs_##type##_##name##_show, \
111                     nilfs_##type##_##name##_store)
112 
113 #define NILFS_FEATURE_INFO_ATTR(name) \
114         NILFS_INFO_ATTR(feature, name)
115 #define NILFS_FEATURE_RO_ATTR(name) \
116         NILFS_RO_ATTR(feature, name)
117 #define NILFS_FEATURE_RW_ATTR(name) \
118         NILFS_RW_ATTR(feature, name)
119 
120 #define NILFS_DEV_INFO_ATTR(name) \
121         NILFS_INFO_ATTR(dev, name)
122 #define NILFS_DEV_RO_ATTR(name) \
123         NILFS_RO_ATTR(dev, name)
124 #define NILFS_DEV_RW_ATTR(name) \
125         NILFS_RW_ATTR(dev, name)
126 
127 #define NILFS_SEGMENTS_RO_ATTR(name) \
128         NILFS_RO_ATTR(segments, name)
129 #define NILFS_SEGMENTS_RW_ATTR(name) \
130         NILFS_RW_ATTR(segs_info, name)
131 
132 #define NILFS_MOUNTED_SNAPSHOTS_RO_ATTR(name) \
133         NILFS_RO_ATTR(mounted_snapshots, name)
134 
135 #define NILFS_CHECKPOINTS_RO_ATTR(name) \
136         NILFS_RO_ATTR(checkpoints, name)
137 #define NILFS_CHECKPOINTS_RW_ATTR(name) \
138         NILFS_RW_ATTR(checkpoints, name)
139 
140 #define NILFS_SNAPSHOT_INFO_ATTR(name) \
141         NILFS_INFO_ATTR(snapshot, name)
142 #define NILFS_SNAPSHOT_RO_ATTR(name) \
143         NILFS_RO_ATTR(snapshot, name)
144 #define NILFS_SNAPSHOT_RW_ATTR(name) \
145         NILFS_RW_ATTR(snapshot, name)
146 
147 #define NILFS_SUPERBLOCK_RO_ATTR(name) \
148         NILFS_RO_ATTR(superblock, name)
149 #define NILFS_SUPERBLOCK_RW_ATTR(name) \
150         NILFS_RW_ATTR(superblock, name)
151 
152 #define NILFS_SEGCTOR_INFO_ATTR(name) \
153         NILFS_INFO_ATTR(segctor, name)
154 #define NILFS_SEGCTOR_RO_ATTR(name) \
155         NILFS_RO_ATTR(segctor, name)
156 #define NILFS_SEGCTOR_RW_ATTR(name) \
157         NILFS_RW_ATTR(segctor, name)
158 
159 #define NILFS_FEATURE_ATTR_LIST(name) \
160         (&nilfs_feature_attr_##name.attr)
161 #define NILFS_DEV_ATTR_LIST(name) \
162         (&nilfs_dev_attr_##name.attr)
163 #define NILFS_SEGMENTS_ATTR_LIST(name) \
164         (&nilfs_segments_attr_##name.attr)
165 #define NILFS_MOUNTED_SNAPSHOTS_ATTR_LIST(name) \
166         (&nilfs_mounted_snapshots_attr_##name.attr)
167 #define NILFS_CHECKPOINTS_ATTR_LIST(name) \
168         (&nilfs_checkpoints_attr_##name.attr)
169 #define NILFS_SNAPSHOT_ATTR_LIST(name) \
170         (&nilfs_snapshot_attr_##name.attr)
171 #define NILFS_SUPERBLOCK_ATTR_LIST(name) \
172         (&nilfs_superblock_attr_##name.attr)
173 #define NILFS_SEGCTOR_ATTR_LIST(name) \
174         (&nilfs_segctor_attr_##name.attr)
175 
176 #endif /* _NILFS_SYSFS_H */
177 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp