1 /* 2 * fs/sysfs/sysfs.h - sysfs internal header file 3 * 4 * Copyright (c) 2001-3 Patrick Mochel 5 * Copyright (c) 2007 SUSE Linux Products GmbH 6 * Copyright (c) 2007 Tejun Heo <teheo@suse.de> 7 * 8 * This file is released under the GPLv2. 9 */ 10 11 #ifndef __SYSFS_INTERNAL_H 12 #define __SYSFS_INTERNAL_H 13 14 #include "../kernfs/kernfs-internal.h" 15 #include <linux/sysfs.h> 16 17 /* 18 * mount.c 19 */ 20 21 /* 22 * Each sb is associated with one namespace tag, currently the network 23 * namespace of the task which mounted this sysfs instance. If multiple 24 * tags become necessary, make the following an array and compare 25 * sysfs_dirent tag against every entry. 26 */ 27 struct sysfs_super_info { 28 void *ns; 29 }; 30 #define sysfs_info(SB) ((struct sysfs_super_info *)(SB->s_fs_info)) 31 extern struct sysfs_dirent sysfs_root; 32 extern struct kmem_cache *sysfs_dir_cachep; 33 34 /* 35 * dir.c 36 */ 37 extern spinlock_t sysfs_symlink_target_lock; 38 39 void sysfs_warn_dup(struct sysfs_dirent *parent, const char *name); 40 41 /* 42 * file.c 43 */ 44 extern const struct file_operations kernfs_file_operations; 45 46 int sysfs_add_file(struct sysfs_dirent *dir_sd, 47 const struct attribute *attr, bool is_bin); 48 49 int sysfs_add_file_mode_ns(struct sysfs_dirent *dir_sd, 50 const struct attribute *attr, bool is_bin, 51 umode_t amode, const void *ns); 52 void sysfs_unmap_bin_file(struct sysfs_dirent *sd); 53 54 /* 55 * symlink.c 56 */ 57 extern const struct inode_operations sysfs_symlink_inode_operations; 58 int sysfs_create_link_sd(struct sysfs_dirent *sd, struct kobject *target, 59 const char *name); 60 61 #endif /* __SYSFS_INTERNAL_H */ 62