blob: fe6290d417762ec96cef3e4514ed211637d2fc06 [file] [log] [blame]
Tejun Heob8441ed2013-11-24 09:54:58 -05001/*
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
Tejun Heo879f40d2013-11-23 17:21:49 -050010#include <linux/kernel.h>
Tejun Heo5d0e26b2013-11-23 17:21:50 -050011#include <linux/err.h>
Tejun Heo879f40d2013-11-23 17:21:49 -050012
Tejun Heob8441ed2013-11-24 09:54:58 -050013struct sysfs_dirent;
14
Tejun Heo879f40d2013-11-23 17:21:49 -050015#ifdef CONFIG_SYSFS
16
Tejun Heo5d0e26b2013-11-23 17:21:50 -050017struct sysfs_dirent *kernfs_create_link(struct sysfs_dirent *parent,
18 const char *name,
19 struct sysfs_dirent *target);
Tejun Heo879f40d2013-11-23 17:21:49 -050020void kernfs_remove(struct sysfs_dirent *sd);
21int kernfs_remove_by_name_ns(struct sysfs_dirent *parent, const char *name,
22 const void *ns);
23
24#else /* CONFIG_SYSFS */
25
Tejun Heo5d0e26b2013-11-23 17:21:50 -050026static inline struct sysfs_dirent *
27kernfs_create_link(struct sysfs_dirent *parent, const char *name,
28 struct sysfs_dirent *target)
29{ return ERR_PTR(-ENOSYS); }
30
Tejun Heo879f40d2013-11-23 17:21:49 -050031static inline void kernfs_remove(struct sysfs_dirent *sd) { }
32
33static 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
39static 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
Tejun Heob8441ed2013-11-24 09:54:58 -050045#endif /* __LINUX_KERNFS_H */