Tejun Heo 5d0e26bb59 sysfs, kernfs: introduce kernfs_create_link()
Separate out kernfs symlink interface - kernfs_create_link() - which
takes and returns sysfs_dirents, from sysfs_do_create_link_sd().
sysfs_do_create_link_sd() now just determines the parent and target
sysfs_dirents and invokes the new interface and handles dup warning.

This patch doesn't introduce behavior changes.

v2: Dummy implementation for !CONFIG_SYSFS updated to return -ENOSYS.

Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-11-27 13:57:56 -08:00

46 lines
1.1 KiB
C

/*
* kernfs.h - pseudo filesystem decoupled from vfs locking
*
* This file is released under the GPLv2.
*/
#ifndef __LINUX_KERNFS_H
#define __LINUX_KERNFS_H
#include <linux/kernel.h>
#include <linux/err.h>
struct sysfs_dirent;
#ifdef CONFIG_SYSFS
struct sysfs_dirent *kernfs_create_link(struct sysfs_dirent *parent,
const char *name,
struct sysfs_dirent *target);
void kernfs_remove(struct sysfs_dirent *sd);
int kernfs_remove_by_name_ns(struct sysfs_dirent *parent, const char *name,
const void *ns);
#else /* CONFIG_SYSFS */
static inline struct sysfs_dirent *
kernfs_create_link(struct sysfs_dirent *parent, const char *name,
struct sysfs_dirent *target)
{ return ERR_PTR(-ENOSYS); }
static inline void kernfs_remove(struct sysfs_dirent *sd) { }
static inline int kernfs_remove_by_name_ns(struct sysfs_dirent *parent,
const char *name, const void *ns)
{ return -ENOSYS; }
#endif /* CONFIG_SYSFS */
static inline int kernfs_remove_by_name(struct sysfs_dirent *parent,
const char *name)
{
return kernfs_remove_by_name_ns(parent, name, NULL);
}
#endif /* __LINUX_KERNFS_H */