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