sysfs.h
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:4k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  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.  *
  7.  * Please see Documentation/filesystems/sysfs.txt for more information.
  8.  */
  9. #ifndef _SYSFS_H_
  10. #define _SYSFS_H_
  11. #include <asm/atomic.h>
  12. struct kobject;
  13. struct module;
  14. struct attribute {
  15. const char * name;
  16. struct module  * owner;
  17. mode_t mode;
  18. };
  19. struct attribute_group {
  20. const char * name;
  21. struct attribute ** attrs;
  22. };
  23. /**
  24.  * Use these macros to make defining attributes easier. See include/linux/device.h
  25.  * for examples..
  26.  */
  27. #define __ATTR(_name,_mode,_show,_store) { 
  28. .attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE },
  29. .show = _show,
  30. .store = _store,
  31. }
  32. #define __ATTR_RO(_name) { 
  33. .attr = { .name = __stringify(_name), .mode = 0444, .owner = THIS_MODULE },
  34. .show = _name##_show,
  35. }
  36. #define __ATTR_NULL { .attr = { .name = NULL } }
  37. #define attr_name(_attr) (_attr).attr.name
  38. struct vm_area_struct;
  39. struct bin_attribute {
  40. struct attribute attr;
  41. size_t size;
  42. void *private;
  43. ssize_t (*read)(struct kobject *, char *, loff_t, size_t);
  44. ssize_t (*write)(struct kobject *, char *, loff_t, size_t);
  45. int (*mmap)(struct kobject *, struct bin_attribute *attr,
  46.     struct vm_area_struct *vma);
  47. };
  48. struct sysfs_ops {
  49. ssize_t (*show)(struct kobject *, struct attribute *,char *);
  50. ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t);
  51. };
  52. struct sysfs_dirent {
  53. atomic_t s_count;
  54. struct list_head s_sibling;
  55. struct list_head s_children;
  56. void  * s_element;
  57. int s_type;
  58. umode_t s_mode;
  59. struct dentry * s_dentry;
  60. struct iattr * s_iattr;
  61. };
  62. #define SYSFS_ROOT 0x0001
  63. #define SYSFS_DIR 0x0002
  64. #define SYSFS_KOBJ_ATTR  0x0004
  65. #define SYSFS_KOBJ_BIN_ATTR 0x0008
  66. #define SYSFS_KOBJ_LINK  0x0020
  67. #define SYSFS_NOT_PINNED (SYSFS_KOBJ_ATTR | SYSFS_KOBJ_BIN_ATTR | SYSFS_KOBJ_LINK)
  68. #ifdef CONFIG_SYSFS
  69. extern int
  70. sysfs_create_dir(struct kobject *);
  71. extern void
  72. sysfs_remove_dir(struct kobject *);
  73. extern int
  74. sysfs_rename_dir(struct kobject *, const char *new_name);
  75. extern int
  76. sysfs_create_file(struct kobject *, const struct attribute *);
  77. extern int
  78. sysfs_update_file(struct kobject *, const struct attribute *);
  79. extern int
  80. sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, mode_t mode);
  81. extern void
  82. sysfs_remove_file(struct kobject *, const struct attribute *);
  83. extern int
  84. sysfs_create_link(struct kobject * kobj, struct kobject * target, const char * name);
  85. extern void
  86. sysfs_remove_link(struct kobject *, const char * name);
  87. int sysfs_create_bin_file(struct kobject * kobj, struct bin_attribute * attr);
  88. int sysfs_remove_bin_file(struct kobject * kobj, struct bin_attribute * attr);
  89. int sysfs_create_group(struct kobject *, const struct attribute_group *);
  90. void sysfs_remove_group(struct kobject *, const struct attribute_group *);
  91. #else /* CONFIG_SYSFS */
  92. static inline int sysfs_create_dir(struct kobject * k)
  93. {
  94. return 0;
  95. }
  96. static inline void sysfs_remove_dir(struct kobject * k)
  97. {
  98. ;
  99. }
  100. static inline int sysfs_rename_dir(struct kobject * k, const char *new_name)
  101. {
  102. return 0;
  103. }
  104. static inline int sysfs_create_file(struct kobject * k, const struct attribute * a)
  105. {
  106. return 0;
  107. }
  108. static inline int sysfs_update_file(struct kobject * k, const struct attribute * a)
  109. {
  110. return 0;
  111. }
  112. static inline int sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, mode_t mode)
  113. {
  114. return 0;
  115. }
  116. static inline void sysfs_remove_file(struct kobject * k, const struct attribute * a)
  117. {
  118. ;
  119. }
  120. static inline int sysfs_create_link(struct kobject * k, struct kobject * t, const char * n)
  121. {
  122. return 0;
  123. }
  124. static inline void sysfs_remove_link(struct kobject * k, const char * name)
  125. {
  126. ;
  127. }
  128. static inline int sysfs_create_bin_file(struct kobject * k, struct bin_attribute * a)
  129. {
  130. return 0;
  131. }
  132. static inline int sysfs_remove_bin_file(struct kobject * k, struct bin_attribute * a)
  133. {
  134. return 0;
  135. }
  136. static inline int sysfs_create_group(struct kobject * k, const struct attribute_group *g)
  137. {
  138. return 0;
  139. }
  140. static inline void sysfs_remove_group(struct kobject * k, const struct attribute_group * g)
  141. {
  142. ;
  143. }
  144. #endif /* CONFIG_SYSFS */
  145. #endif /* _SYSFS_H_ */