18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * fs/sysfs/sysfs.h - sysfs internal header file
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright (c) 2001-3 Patrick Mochel
68c2ecf20Sopenharmony_ci * Copyright (c) 2007 SUSE Linux Products GmbH
78c2ecf20Sopenharmony_ci * Copyright (c) 2007 Tejun Heo <teheo@suse.de>
88c2ecf20Sopenharmony_ci */
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci#ifndef __SYSFS_INTERNAL_H
118c2ecf20Sopenharmony_ci#define __SYSFS_INTERNAL_H
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci#include <linux/sysfs.h>
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci/*
168c2ecf20Sopenharmony_ci * mount.c
178c2ecf20Sopenharmony_ci */
188c2ecf20Sopenharmony_ciextern struct kernfs_node *sysfs_root_kn;
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci/*
218c2ecf20Sopenharmony_ci * dir.c
228c2ecf20Sopenharmony_ci */
238c2ecf20Sopenharmony_ciextern spinlock_t sysfs_symlink_target_lock;
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_civoid sysfs_warn_dup(struct kernfs_node *parent, const char *name);
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci/*
288c2ecf20Sopenharmony_ci * file.c
298c2ecf20Sopenharmony_ci */
308c2ecf20Sopenharmony_ciint sysfs_add_file_mode_ns(struct kernfs_node *parent,
318c2ecf20Sopenharmony_ci			   const struct attribute *attr, bool is_bin,
328c2ecf20Sopenharmony_ci			   umode_t amode, kuid_t uid, kgid_t gid,
338c2ecf20Sopenharmony_ci			   const void *ns);
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci/*
368c2ecf20Sopenharmony_ci * symlink.c
378c2ecf20Sopenharmony_ci */
388c2ecf20Sopenharmony_ciint sysfs_create_link_sd(struct kernfs_node *kn, struct kobject *target,
398c2ecf20Sopenharmony_ci			 const char *name);
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci#endif	/* __SYSFS_INTERNAL_H */
42