~ubuntu-branches/ubuntu/utopic/xen/utopic

« back to all changes in this revision

Viewing changes to xen/include/asm-ia64/linux/sysfs.h

  • Committer: Bazaar Package Importer
  • Author(s): Bastian Blank
  • Date: 2010-05-06 15:47:38 UTC
  • mto: (1.3.1) (15.1.1 sid) (4.1.1 experimental)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20100506154738-agoz0rlafrh1fnq7
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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 <linux/compiler.h>
 
14
#include <asm/atomic.h>
 
15
 
 
16
struct kobject;
 
17
struct module;
 
18
 
 
19
struct attribute {
 
20
        const char              * name;
 
21
        struct module           * owner;
 
22
        mode_t                  mode;
 
23
};
 
24
 
 
25
struct attribute_group {
 
26
        const char              * name;
 
27
        struct attribute        ** attrs;
 
28
};
 
29
 
 
30
 
 
31
 
 
32
/**
 
33
 * Use these macros to make defining attributes easier. See include/linux/device.h
 
34
 * for examples..
 
35
 */
 
36
 
 
37
#define __ATTR(_name,_mode,_show,_store) { \
 
38
        .attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE },     \
 
39
        .show   = _show,                                        \
 
40
        .store  = _store,                                       \
 
41
}
 
42
 
 
43
#define __ATTR_RO(_name) { \
 
44
        .attr   = { .name = __stringify(_name), .mode = 0444, .owner = THIS_MODULE },   \
 
45
        .show   = _name##_show, \
 
46
}
 
47
 
 
48
#define __ATTR_NULL { .attr = { .name = NULL } }
 
49
 
 
50
#define attr_name(_attr) (_attr).attr.name
 
51
 
 
52
struct vm_area_struct;
 
53
 
 
54
struct bin_attribute {
 
55
        struct attribute        attr;
 
56
        size_t                  size;
 
57
        void                    *private;
 
58
        ssize_t (*read)(struct kobject *, char *, loff_t, size_t);
 
59
        ssize_t (*write)(struct kobject *, char *, loff_t, size_t);
 
60
        int (*mmap)(struct kobject *, struct bin_attribute *attr,
 
61
                    struct vm_area_struct *vma);
 
62
};
 
63
 
 
64
struct sysfs_ops {
 
65
        ssize_t (*show)(struct kobject *, struct attribute *,char *);
 
66
        ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t);
 
67
};
 
68
 
 
69
struct sysfs_dirent {
 
70
        atomic_t                s_count;
 
71
        struct list_head        s_sibling;
 
72
        struct list_head        s_children;
 
73
        void                    * s_element;
 
74
        int                     s_type;
 
75
        umode_t                 s_mode;
 
76
        struct dentry           * s_dentry;
 
77
        struct iattr            * s_iattr;
 
78
        atomic_t                s_event;
 
79
};
 
80
 
 
81
#define SYSFS_ROOT              0x0001
 
82
#define SYSFS_DIR               0x0002
 
83
#define SYSFS_KOBJ_ATTR         0x0004
 
84
#define SYSFS_KOBJ_BIN_ATTR     0x0008
 
85
#define SYSFS_KOBJ_LINK         0x0020
 
86
#define SYSFS_NOT_PINNED        (SYSFS_KOBJ_ATTR | SYSFS_KOBJ_BIN_ATTR | SYSFS_KOBJ_LINK)
 
87
 
 
88
#ifdef CONFIG_SYSFS
 
89
 
 
90
extern int __must_check
 
91
sysfs_create_dir(struct kobject *);
 
92
 
 
93
extern void
 
94
sysfs_remove_dir(struct kobject *);
 
95
 
 
96
extern int __must_check
 
97
sysfs_rename_dir(struct kobject *, const char *new_name);
 
98
 
 
99
extern int __must_check
 
100
sysfs_create_file(struct kobject *, const struct attribute *);
 
101
 
 
102
extern int __must_check
 
103
sysfs_update_file(struct kobject *, const struct attribute *);
 
104
 
 
105
extern int __must_check
 
106
sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, mode_t mode);
 
107
 
 
108
extern void
 
109
sysfs_remove_file(struct kobject *, const struct attribute *);
 
110
 
 
111
extern int __must_check
 
112
sysfs_create_link(struct kobject * kobj, struct kobject * target, const char * name);
 
113
 
 
114
extern void
 
115
sysfs_remove_link(struct kobject *, const char * name);
 
116
 
 
117
int __must_check sysfs_create_bin_file(struct kobject *kobj,
 
118
                                        struct bin_attribute *attr);
 
119
void sysfs_remove_bin_file(struct kobject *kobj, struct bin_attribute *attr);
 
120
 
 
121
int __must_check sysfs_create_group(struct kobject *,
 
122
                                        const struct attribute_group *);
 
123
void sysfs_remove_group(struct kobject *, const struct attribute_group *);
 
124
void sysfs_notify(struct kobject * k, char *dir, char *attr);
 
125
 
 
126
extern int __must_check sysfs_init(void);
 
127
 
 
128
#else /* CONFIG_SYSFS */
 
129
 
 
130
static inline int sysfs_create_dir(struct kobject * k)
 
131
{
 
132
        return 0;
 
133
}
 
134
 
 
135
static inline void sysfs_remove_dir(struct kobject * k)
 
136
{
 
137
        ;
 
138
}
 
139
 
 
140
static inline int sysfs_rename_dir(struct kobject * k, const char *new_name)
 
141
{
 
142
        return 0;
 
143
}
 
144
 
 
145
static inline int sysfs_create_file(struct kobject * k, const struct attribute * a)
 
146
{
 
147
        return 0;
 
148
}
 
149
 
 
150
static inline int sysfs_update_file(struct kobject * k, const struct attribute * a)
 
151
{
 
152
        return 0;
 
153
}
 
154
static inline int sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, mode_t mode)
 
155
{
 
156
        return 0;
 
157
}
 
158
 
 
159
static inline void sysfs_remove_file(struct kobject * k, const struct attribute * a)
 
160
{
 
161
        ;
 
162
}
 
163
 
 
164
static inline int sysfs_create_link(struct kobject * k, struct kobject * t, const char * n)
 
165
{
 
166
        return 0;
 
167
}
 
168
 
 
169
static inline void sysfs_remove_link(struct kobject * k, const char * name)
 
170
{
 
171
        ;
 
172
}
 
173
 
 
174
 
 
175
static inline int sysfs_create_bin_file(struct kobject * k, struct bin_attribute * a)
 
176
{
 
177
        return 0;
 
178
}
 
179
 
 
180
static inline int sysfs_remove_bin_file(struct kobject * k, struct bin_attribute * a)
 
181
{
 
182
        return 0;
 
183
}
 
184
 
 
185
static inline int sysfs_create_group(struct kobject * k, const struct attribute_group *g)
 
186
{
 
187
        return 0;
 
188
}
 
189
 
 
190
static inline void sysfs_remove_group(struct kobject * k, const struct attribute_group * g)
 
191
{
 
192
        ;
 
193
}
 
194
 
 
195
static inline void sysfs_notify(struct kobject * k, char *dir, char *attr)
 
196
{
 
197
}
 
198
 
 
199
static inline int __must_check sysfs_init(void)
 
200
{
 
201
        return 0;
 
202
}
 
203
 
 
204
#endif /* CONFIG_SYSFS */
 
205
 
 
206
#endif /* _SYSFS_H_ */