diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /include/linux/sysfs.h |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'include/linux/sysfs.h')
-rw-r--r-- | include/linux/sysfs.h | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h new file mode 100644 index 000000000000..6f502ff7902a --- /dev/null +++ b/include/linux/sysfs.h | |||
@@ -0,0 +1,182 @@ | |||
1 | /* | ||
2 | * sysfs.h - definitions for the device driver filesystem | ||
3 | * | ||
4 | * Copyright (c) 2001,2002 Patrick Mochel | ||
5 | * Copyright (c) 2004 Silicon Graphics, Inc. | ||
6 | * | ||
7 | * Please see Documentation/filesystems/sysfs.txt for more information. | ||
8 | */ | ||
9 | |||
10 | #ifndef _SYSFS_H_ | ||
11 | #define _SYSFS_H_ | ||
12 | |||
13 | #include <asm/atomic.h> | ||
14 | |||
15 | struct kobject; | ||
16 | struct module; | ||
17 | |||
18 | struct attribute { | ||
19 | char * name; | ||
20 | struct module * owner; | ||
21 | mode_t mode; | ||
22 | }; | ||
23 | |||
24 | struct attribute_group { | ||
25 | char * name; | ||
26 | struct attribute ** attrs; | ||
27 | }; | ||
28 | |||
29 | |||
30 | |||
31 | /** | ||
32 | * Use these macros to make defining attributes easier. See include/linux/device.h | ||
33 | * for examples.. | ||
34 | */ | ||
35 | |||
36 | #define __ATTR(_name,_mode,_show,_store) { \ | ||
37 | .attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE }, \ | ||
38 | .show = _show, \ | ||
39 | .store = _store, \ | ||
40 | } | ||
41 | |||
42 | #define __ATTR_RO(_name) { \ | ||
43 | .attr = { .name = __stringify(_name), .mode = 0444, .owner = THIS_MODULE }, \ | ||
44 | .show = _name##_show, \ | ||
45 | } | ||
46 | |||
47 | #define __ATTR_NULL { .attr = { .name = NULL } } | ||
48 | |||
49 | #define attr_name(_attr) (_attr).attr.name | ||
50 | |||
51 | struct vm_area_struct; | ||
52 | |||
53 | struct bin_attribute { | ||
54 | struct attribute attr; | ||
55 | size_t size; | ||
56 | void *private; | ||
57 | ssize_t (*read)(struct kobject *, char *, loff_t, size_t); | ||
58 | ssize_t (*write)(struct kobject *, char *, loff_t, size_t); | ||
59 | int (*mmap)(struct kobject *, struct bin_attribute *attr, | ||
60 | struct vm_area_struct *vma); | ||
61 | }; | ||
62 | |||
63 | struct sysfs_ops { | ||
64 | ssize_t (*show)(struct kobject *, struct attribute *,char *); | ||
65 | ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t); | ||
66 | }; | ||
67 | |||
68 | struct sysfs_dirent { | ||
69 | atomic_t s_count; | ||
70 | struct list_head s_sibling; | ||
71 | struct list_head s_children; | ||
72 | void * s_element; | ||
73 | int s_type; | ||
74 | umode_t s_mode; | ||
75 | struct dentry * s_dentry; | ||
76 | }; | ||
77 | |||
78 | #define SYSFS_ROOT 0x0001 | ||
79 | #define SYSFS_DIR 0x0002 | ||
80 | #define SYSFS_KOBJ_ATTR 0x0004 | ||
81 | #define SYSFS_KOBJ_BIN_ATTR 0x0008 | ||
82 | #define SYSFS_KOBJ_LINK 0x0020 | ||
83 | #define SYSFS_NOT_PINNED (SYSFS_KOBJ_ATTR | SYSFS_KOBJ_BIN_ATTR | SYSFS_KOBJ_LINK) | ||
84 | |||
85 | #ifdef CONFIG_SYSFS | ||
86 | |||
87 | extern int | ||
88 | sysfs_create_dir(struct kobject *); | ||
89 | |||
90 | extern void | ||
91 | sysfs_remove_dir(struct kobject *); | ||
92 | |||
93 | extern int | ||
94 | sysfs_rename_dir(struct kobject *, const char *new_name); | ||
95 | |||
96 | extern int | ||
97 | sysfs_create_file(struct kobject *, const struct attribute *); | ||
98 | |||
99 | extern int | ||
100 | sysfs_update_file(struct kobject *, const struct attribute *); | ||
101 | |||
102 | extern void | ||
103 | sysfs_remove_file(struct kobject *, const struct attribute *); | ||
104 | |||
105 | extern int | ||
106 | sysfs_create_link(struct kobject * kobj, struct kobject * target, char * name); | ||
107 | |||
108 | extern void | ||
109 | sysfs_remove_link(struct kobject *, char * name); | ||
110 | |||
111 | int sysfs_create_bin_file(struct kobject * kobj, struct bin_attribute * attr); | ||
112 | int sysfs_remove_bin_file(struct kobject * kobj, struct bin_attribute * attr); | ||
113 | |||
114 | int sysfs_create_group(struct kobject *, const struct attribute_group *); | ||
115 | void sysfs_remove_group(struct kobject *, const struct attribute_group *); | ||
116 | |||
117 | #else /* CONFIG_SYSFS */ | ||
118 | |||
119 | static inline int sysfs_create_dir(struct kobject * k) | ||
120 | { | ||
121 | return 0; | ||
122 | } | ||
123 | |||
124 | static inline void sysfs_remove_dir(struct kobject * k) | ||
125 | { | ||
126 | ; | ||
127 | } | ||
128 | |||
129 | static inline int sysfs_rename_dir(struct kobject * k, const char *new_name) | ||
130 | { | ||
131 | return 0; | ||
132 | } | ||
133 | |||
134 | static inline int sysfs_create_file(struct kobject * k, const struct attribute * a) | ||
135 | { | ||
136 | return 0; | ||
137 | } | ||
138 | |||
139 | static inline int sysfs_update_file(struct kobject * k, const struct attribute * a) | ||
140 | { | ||
141 | return 0; | ||
142 | } | ||
143 | |||
144 | static inline void sysfs_remove_file(struct kobject * k, const struct attribute * a) | ||
145 | { | ||
146 | ; | ||
147 | } | ||
148 | |||
149 | static inline int sysfs_create_link(struct kobject * k, struct kobject * t, char * n) | ||
150 | { | ||
151 | return 0; | ||
152 | } | ||
153 | |||
154 | static inline void sysfs_remove_link(struct kobject * k, char * name) | ||
155 | { | ||
156 | ; | ||
157 | } | ||
158 | |||
159 | |||
160 | static inline int sysfs_create_bin_file(struct kobject * k, struct bin_attribute * a) | ||
161 | { | ||
162 | return 0; | ||
163 | } | ||
164 | |||
165 | static inline int sysfs_remove_bin_file(struct kobject * k, struct bin_attribute * a) | ||
166 | { | ||
167 | return 0; | ||
168 | } | ||
169 | |||
170 | static inline int sysfs_create_group(struct kobject * k, const struct attribute_group *g) | ||
171 | { | ||
172 | return 0; | ||
173 | } | ||
174 | |||
175 | static inline void sysfs_remove_group(struct kobject * k, const struct attribute_group * g) | ||
176 | { | ||
177 | ; | ||
178 | } | ||
179 | |||
180 | #endif /* CONFIG_SYSFS */ | ||
181 | |||
182 | #endif /* _SYSFS_H_ */ | ||