1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * fs/sysfs/sysfs.h - sysfs internal header file
4  *
5  * Copyright (c) 2001-3 Patrick Mochel
6  * Copyright (c) 2007 SUSE Linux Products GmbH
7  * Copyright (c) 2007 Tejun Heo <teheo@suse.de>
8  */
9 
10 #ifndef __SYSFS_INTERNAL_H
11 #define __SYSFS_INTERNAL_H
12 
13 #include <linux/sysfs.h>
14 
15 /*
16  * mount.c
17  */
18 extern struct kernfs_node *sysfs_root_kn;
19 
20 /*
21  * dir.c
22  */
23 extern spinlock_t sysfs_symlink_target_lock;
24 
25 void sysfs_warn_dup(struct kernfs_node *parent, const char *name);
26 
27 /*
28  * file.c
29  */
30 int sysfs_add_file_mode_ns(struct kernfs_node *parent,
31 		const struct attribute *attr, umode_t amode, kuid_t uid,
32 		kgid_t gid, const void *ns);
33 int sysfs_add_bin_file_mode_ns(struct kernfs_node *parent,
34 		const struct bin_attribute *battr, umode_t mode,
35 		kuid_t uid, kgid_t gid, const void *ns);
36 
37 /*
38  * symlink.c
39  */
40 int sysfs_create_link_sd(struct kernfs_node *kn, struct kobject *target,
41 			 const char *name);
42 
43 #endif	/* __SYSFS_INTERNAL_H */
44