OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [sysfs.h] - Blame information for rev 81

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
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
 * Copyright (c) 2007 SUSE Linux Products GmbH
7
 * Copyright (c) 2007 Tejun Heo <teheo@suse.de>
8
 *
9
 * Please see Documentation/filesystems/sysfs.txt for more information.
10
 */
11
 
12
#ifndef _SYSFS_H_
13
#define _SYSFS_H_
14
 
15
#include <linux/compiler.h>
16
#include <linux/errno.h>
17
#include <linux/list.h>
18
#include <asm/atomic.h>
19
 
20
struct kobject;
21
struct module;
22
 
23
/* FIXME
24
 * The *owner field is no longer used, but leave around
25
 * until the tree gets cleaned up fully.
26
 */
27
struct attribute {
28
        const char              *name;
29
        struct module           *owner;
30
        mode_t                  mode;
31
};
32
 
33
struct attribute_group {
34
        const char              *name;
35
        struct attribute        **attrs;
36
};
37
 
38
 
39
 
40
/**
41
 * Use these macros to make defining attributes easier. See include/linux/device.h
42
 * for examples..
43
 */
44
 
45
#define __ATTR(_name,_mode,_show,_store) { \
46
        .attr = {.name = __stringify(_name), .mode = _mode },   \
47
        .show   = _show,                                        \
48
        .store  = _store,                                       \
49
}
50
 
51
#define __ATTR_RO(_name) { \
52
        .attr   = { .name = __stringify(_name), .mode = 0444 }, \
53
        .show   = _name##_show,                                 \
54
}
55
 
56
#define __ATTR_NULL { .attr = { .name = NULL } }
57
 
58
#define attr_name(_attr) (_attr).attr.name
59
 
60
struct vm_area_struct;
61
 
62
struct bin_attribute {
63
        struct attribute        attr;
64
        size_t                  size;
65
        void                    *private;
66
        ssize_t (*read)(struct kobject *, struct bin_attribute *,
67
                        char *, loff_t, size_t);
68
        ssize_t (*write)(struct kobject *, struct bin_attribute *,
69
                         char *, loff_t, size_t);
70
        int (*mmap)(struct kobject *, struct bin_attribute *attr,
71
                    struct vm_area_struct *vma);
72
};
73
 
74
struct sysfs_ops {
75
        ssize_t (*show)(struct kobject *, struct attribute *,char *);
76
        ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t);
77
};
78
 
79
#ifdef CONFIG_SYSFS
80
 
81
int sysfs_schedule_callback(struct kobject *kobj, void (*func)(void *),
82
                            void *data, struct module *owner);
83
 
84
int __must_check sysfs_create_dir(struct kobject *kobj);
85
void sysfs_remove_dir(struct kobject *kobj);
86
int __must_check sysfs_rename_dir(struct kobject *kobj, const char *new_name);
87
int __must_check sysfs_move_dir(struct kobject *kobj,
88
                                struct kobject *new_parent_kobj);
89
 
90
int __must_check sysfs_create_file(struct kobject *kobj,
91
                                   const struct attribute *attr);
92
int __must_check sysfs_chmod_file(struct kobject *kobj, struct attribute *attr,
93
                                  mode_t mode);
94
void sysfs_remove_file(struct kobject *kobj, const struct attribute *attr);
95
 
96
int __must_check sysfs_create_bin_file(struct kobject *kobj,
97
                                       struct bin_attribute *attr);
98
void sysfs_remove_bin_file(struct kobject *kobj, struct bin_attribute *attr);
99
 
100
int __must_check sysfs_create_link(struct kobject *kobj, struct kobject *target,
101
                                   const char *name);
102
void sysfs_remove_link(struct kobject *kobj, const char *name);
103
 
104
int __must_check sysfs_create_group(struct kobject *kobj,
105
                                    const struct attribute_group *grp);
106
void sysfs_remove_group(struct kobject *kobj,
107
                        const struct attribute_group *grp);
108
int sysfs_add_file_to_group(struct kobject *kobj,
109
                        const struct attribute *attr, const char *group);
110
void sysfs_remove_file_from_group(struct kobject *kobj,
111
                        const struct attribute *attr, const char *group);
112
 
113
void sysfs_notify(struct kobject *kobj, char *dir, char *attr);
114
 
115
extern int __must_check sysfs_init(void);
116
 
117
#else /* CONFIG_SYSFS */
118
 
119
static inline int sysfs_schedule_callback(struct kobject *kobj,
120
                void (*func)(void *), void *data, struct module *owner)
121
{
122
        return -ENOSYS;
123
}
124
 
125
static inline int sysfs_create_dir(struct kobject *kobj)
126
{
127
        return 0;
128
}
129
 
130
static inline void sysfs_remove_dir(struct kobject *kobj)
131
{
132
        ;
133
}
134
 
135
static inline int sysfs_rename_dir(struct kobject *kobj, const char *new_name)
136
{
137
        return 0;
138
}
139
 
140
static inline int sysfs_move_dir(struct kobject *kobj,
141
                                 struct kobject *new_parent_kobj)
142
{
143
        return 0;
144
}
145
 
146
static inline int sysfs_create_file(struct kobject *kobj,
147
                                    const struct attribute *attr)
148
{
149
        return 0;
150
}
151
 
152
static inline int sysfs_chmod_file(struct kobject *kobj,
153
                                   struct attribute *attr, mode_t mode)
154
{
155
        return 0;
156
}
157
 
158
static inline void sysfs_remove_file(struct kobject *kobj,
159
                                     const struct attribute *attr)
160
{
161
        ;
162
}
163
 
164
static inline int sysfs_create_bin_file(struct kobject *kobj,
165
                                        struct bin_attribute *attr)
166
{
167
        return 0;
168
}
169
 
170
static inline int sysfs_remove_bin_file(struct kobject *kobj,
171
                                        struct bin_attribute *attr)
172
{
173
        return 0;
174
}
175
 
176
static inline int sysfs_create_link(struct kobject *kobj,
177
                                    struct kobject *target, const char *name)
178
{
179
        return 0;
180
}
181
 
182
static inline void sysfs_remove_link(struct kobject *kobj, const char *name)
183
{
184
        ;
185
}
186
 
187
static inline int sysfs_create_group(struct kobject *kobj,
188
                                     const struct attribute_group *grp)
189
{
190
        return 0;
191
}
192
 
193
static inline void sysfs_remove_group(struct kobject *kobj,
194
                                      const struct attribute_group *grp)
195
{
196
        ;
197
}
198
 
199
static inline int sysfs_add_file_to_group(struct kobject *kobj,
200
                const struct attribute *attr, const char *group)
201
{
202
        return 0;
203
}
204
 
205
static inline void sysfs_remove_file_from_group(struct kobject *kobj,
206
                const struct attribute *attr, const char *group)
207
{
208
}
209
 
210
static inline void sysfs_notify(struct kobject *kobj, char *dir, char *attr)
211
{
212
}
213
 
214
static inline int __must_check sysfs_init(void)
215
{
216
        return 0;
217
}
218
 
219
#endif /* CONFIG_SYSFS */
220
 
221
#endif /* _SYSFS_H_ */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.