Subversion Repositories Kolibri OS

Rev

Rev 6102 | Rev 6936 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * sysfs.h - definitions for the device driver filesystem
  3.  *
  4.  * Copyright (c) 2001,2002 Patrick Mochel
  5.  * Copyright (c) 2004 Silicon Graphics, Inc.
  6.  * Copyright (c) 2007 SUSE Linux Products GmbH
  7.  * Copyright (c) 2007 Tejun Heo <teheo@suse.de>
  8.  *
  9.  * Please see Documentation/filesystems/sysfs.txt for more information.
  10.  */
  11.  
  12. #ifndef _SYSFS_H_
  13. #define _SYSFS_H_
  14. #include <linux/compiler.h>
  15. #include <linux/errno.h>
  16. #include <linux/list.h>
  17. #include <linux/lockdep.h>
  18. #include <linux/atomic.h>
  19.  
  20. struct kobject;
  21. struct module;
  22. struct bin_attribute;
  23. enum kobj_ns_type;
  24.  
  25. struct attribute {
  26.         const char              *name;
  27.         umode_t                 mode;
  28. #ifdef CONFIG_DEBUG_LOCK_ALLOC
  29.         bool                    ignore_lockdep:1;
  30.         struct lock_class_key   *key;
  31.         struct lock_class_key   skey;
  32. #endif
  33. };
  34. #ifdef CONFIG_SYSFS
  35.  
  36. int __must_check sysfs_create_dir_ns(struct kobject *kobj, const void *ns);
  37. void sysfs_remove_dir(struct kobject *kobj);
  38. int __must_check sysfs_rename_dir_ns(struct kobject *kobj, const char *new_name,
  39.                                      const void *new_ns);
  40. int __must_check sysfs_move_dir_ns(struct kobject *kobj,
  41.                                    struct kobject *new_parent_kobj,
  42.                                    const void *new_ns);
  43. int __must_check sysfs_create_mount_point(struct kobject *parent_kobj,
  44.                                           const char *name);
  45. void sysfs_remove_mount_point(struct kobject *parent_kobj,
  46.                               const char *name);
  47.  
  48. int __must_check sysfs_create_file_ns(struct kobject *kobj,
  49.                                       const struct attribute *attr,
  50.                                       const void *ns);
  51. int __must_check sysfs_create_files(struct kobject *kobj,
  52.                                    const struct attribute **attr);
  53. int __must_check sysfs_chmod_file(struct kobject *kobj,
  54.                                   const struct attribute *attr, umode_t mode);
  55. void sysfs_remove_file_ns(struct kobject *kobj, const struct attribute *attr,
  56.                           const void *ns);
  57. bool sysfs_remove_file_self(struct kobject *kobj, const struct attribute *attr);
  58. void sysfs_remove_files(struct kobject *kobj, const struct attribute **attr);
  59.  
  60. int __must_check sysfs_create_bin_file(struct kobject *kobj,
  61.                                        const struct bin_attribute *attr);
  62. void sysfs_remove_bin_file(struct kobject *kobj,
  63.                            const struct bin_attribute *attr);
  64.  
  65. int __must_check sysfs_create_link(struct kobject *kobj, struct kobject *target,
  66.                                    const char *name);
  67. int __must_check sysfs_create_link_nowarn(struct kobject *kobj,
  68.                                           struct kobject *target,
  69.                                           const char *name);
  70. void sysfs_remove_link(struct kobject *kobj, const char *name);
  71.  
  72. int sysfs_rename_link_ns(struct kobject *kobj, struct kobject *target,
  73.                          const char *old_name, const char *new_name,
  74.                          const void *new_ns);
  75.  
  76. void sysfs_delete_link(struct kobject *dir, struct kobject *targ,
  77.                         const char *name);
  78.  
  79. int __must_check sysfs_create_group(struct kobject *kobj,
  80.                                     const struct attribute_group *grp);
  81. int __must_check sysfs_create_groups(struct kobject *kobj,
  82.                                      const struct attribute_group **groups);
  83. int sysfs_update_group(struct kobject *kobj,
  84.                        const struct attribute_group *grp);
  85. void sysfs_remove_group(struct kobject *kobj,
  86.                         const struct attribute_group *grp);
  87. void sysfs_remove_groups(struct kobject *kobj,
  88.                          const struct attribute_group **groups);
  89. int sysfs_add_file_to_group(struct kobject *kobj,
  90.                         const struct attribute *attr, const char *group);
  91. void sysfs_remove_file_from_group(struct kobject *kobj,
  92.                         const struct attribute *attr, const char *group);
  93. int sysfs_merge_group(struct kobject *kobj,
  94.                        const struct attribute_group *grp);
  95. void sysfs_unmerge_group(struct kobject *kobj,
  96.                        const struct attribute_group *grp);
  97. int sysfs_add_link_to_group(struct kobject *kobj, const char *group_name,
  98.                             struct kobject *target, const char *link_name);
  99. void sysfs_remove_link_from_group(struct kobject *kobj, const char *group_name,
  100.                                   const char *link_name);
  101. int __compat_only_sysfs_link_entry_to_kobj(struct kobject *kobj,
  102.                                       struct kobject *target_kobj,
  103.                                       const char *target_name);
  104.  
  105. void sysfs_notify(struct kobject *kobj, const char *dir, const char *attr);
  106.  
  107. int __must_check sysfs_init(void);
  108.  
  109. static inline void sysfs_enable_ns(struct kernfs_node *kn)
  110. {
  111.         return kernfs_enable_ns(kn);
  112. }
  113.  
  114. #else /* CONFIG_SYSFS */
  115.  
  116. static inline int sysfs_create_dir_ns(struct kobject *kobj, const void *ns)
  117. {
  118.         return 0;
  119. }
  120.  
  121. static inline void sysfs_remove_dir(struct kobject *kobj)
  122. {
  123. }
  124.  
  125. static inline int sysfs_rename_dir_ns(struct kobject *kobj,
  126.                                       const char *new_name, const void *new_ns)
  127. {
  128.         return 0;
  129. }
  130.  
  131. static inline int sysfs_move_dir_ns(struct kobject *kobj,
  132.                                     struct kobject *new_parent_kobj,
  133.                                     const void *new_ns)
  134. {
  135.         return 0;
  136. }
  137.  
  138. static inline int sysfs_create_mount_point(struct kobject *parent_kobj,
  139.                                            const char *name)
  140. {
  141.         return 0;
  142. }
  143.  
  144. static inline void sysfs_remove_mount_point(struct kobject *parent_kobj,
  145.                                             const char *name)
  146. {
  147. }
  148.  
  149. static inline int sysfs_create_file_ns(struct kobject *kobj,
  150.                                        const struct attribute *attr,
  151.                                        const void *ns)
  152. {
  153.         return 0;
  154. }
  155.  
  156. static inline int sysfs_create_files(struct kobject *kobj,
  157.                                     const struct attribute **attr)
  158. {
  159.         return 0;
  160. }
  161.  
  162. static inline int sysfs_chmod_file(struct kobject *kobj,
  163.                                    const struct attribute *attr, umode_t mode)
  164. {
  165.         return 0;
  166. }
  167.  
  168. static inline void sysfs_remove_file_ns(struct kobject *kobj,
  169.                                         const struct attribute *attr,
  170.                                         const void *ns)
  171. {
  172. }
  173.  
  174. static inline bool sysfs_remove_file_self(struct kobject *kobj,
  175.                                           const struct attribute *attr)
  176. {
  177.         return false;
  178. }
  179.  
  180. static inline void sysfs_remove_files(struct kobject *kobj,
  181.                                      const struct attribute **attr)
  182. {
  183. }
  184.  
  185. static inline int sysfs_create_bin_file(struct kobject *kobj,
  186.                                         const struct bin_attribute *attr)
  187. {
  188.         return 0;
  189. }
  190.  
  191. static inline void sysfs_remove_bin_file(struct kobject *kobj,
  192.                                          const struct bin_attribute *attr)
  193. {
  194. }
  195.  
  196. #define sysfs_create_link(kobj,target, name) (0)
  197.  
  198. static inline int sysfs_create_link_nowarn(struct kobject *kobj,
  199.                                            struct kobject *target,
  200.                                            const char *name)
  201. {
  202.         return 0;
  203. }
  204.  
  205. #define sysfs_remove_link(kobj, name)
  206.  
  207. static inline int sysfs_rename_link_ns(struct kobject *k, struct kobject *t,
  208.                                        const char *old_name,
  209.                                        const char *new_name, const void *ns)
  210. {
  211.         return 0;
  212. }
  213.  
  214. static inline void sysfs_delete_link(struct kobject *k, struct kobject *t,
  215.                                      const char *name)
  216. {
  217. }
  218.  
  219.  
  220. static inline int sysfs_add_file_to_group(struct kobject *kobj,
  221.                 const struct attribute *attr, const char *group)
  222. {
  223.         return 0;
  224. }
  225.  
  226. static inline void sysfs_remove_file_from_group(struct kobject *kobj,
  227.                 const struct attribute *attr, const char *group)
  228. {
  229. }
  230.  
  231. static inline int sysfs_add_link_to_group(struct kobject *kobj,
  232.                 const char *group_name, struct kobject *target,
  233.                 const char *link_name)
  234. {
  235.         return 0;
  236. }
  237.  
  238. static inline void sysfs_remove_link_from_group(struct kobject *kobj,
  239.                 const char *group_name, const char *link_name)
  240. {
  241. }
  242.  
  243. static inline int __compat_only_sysfs_link_entry_to_kobj(
  244.         struct kobject *kobj,
  245.         struct kobject *target_kobj,
  246.         const char *target_name)
  247. {
  248.         return 0;
  249. }
  250.  
  251. static inline void sysfs_notify(struct kobject *kobj, const char *dir,
  252.                                 const char *attr)
  253. {
  254. }
  255.  
  256. static inline int __must_check sysfs_init(void)
  257. {
  258.         return 0;
  259. }
  260.  
  261. #endif /* CONFIG_SYSFS */
  262. #endif /* _SYSFS_H_ */
  263.