]> git.karo-electronics.de Git - karo-tx-linux.git/blob - include/linux/kernfs.h
sysfs, kernfs: introduce kernfs_create_link()
[karo-tx-linux.git] / include / linux / kernfs.h
1 /*
2  * kernfs.h - pseudo filesystem decoupled from vfs locking
3  *
4  * This file is released under the GPLv2.
5  */
6
7 #ifndef __LINUX_KERNFS_H
8 #define __LINUX_KERNFS_H
9
10 #include <linux/kernel.h>
11 #include <linux/err.h>
12
13 struct sysfs_dirent;
14
15 #ifdef CONFIG_SYSFS
16
17 struct sysfs_dirent *kernfs_create_link(struct sysfs_dirent *parent,
18                                         const char *name,
19                                         struct sysfs_dirent *target);
20 void kernfs_remove(struct sysfs_dirent *sd);
21 int kernfs_remove_by_name_ns(struct sysfs_dirent *parent, const char *name,
22                              const void *ns);
23
24 #else   /* CONFIG_SYSFS */
25
26 static inline struct sysfs_dirent *
27 kernfs_create_link(struct sysfs_dirent *parent, const char *name,
28                    struct sysfs_dirent *target)
29 { return ERR_PTR(-ENOSYS); }
30
31 static inline void kernfs_remove(struct sysfs_dirent *sd) { }
32
33 static inline int kernfs_remove_by_name_ns(struct sysfs_dirent *parent,
34                                            const char *name, const void *ns)
35 { return -ENOSYS; }
36
37 #endif  /* CONFIG_SYSFS */
38
39 static inline int kernfs_remove_by_name(struct sysfs_dirent *parent,
40                                         const char *name)
41 {
42         return kernfs_remove_by_name_ns(parent, name, NULL);
43 }
44
45 #endif  /* __LINUX_KERNFS_H */