LCOV - code coverage report
Current view: top level - include/linux - sysfs.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 7 7 100.0 %
Date: 2017-01-25 Functions: 0 0 -

          Line data    Source code
       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             : 
      15             : #include <linux/compiler.h>
      16             : #include <linux/errno.h>
      17             : #include <linux/list.h>
      18             : #include <asm/atomic.h>
      19             : 
      20             : struct kobject;
      21             : struct module;
      22             : 
      23             : /* FIXME
      24             :  * The *owner field is no longer used.
      25             :  * x86 tree has been cleaned up. The owner
      26             :  * attribute is still left for other arches.
      27             :  */
      28             : struct attribute {
      29             :         const char              *name;
      30             :         struct module           *owner;
      31             :         mode_t                  mode;
      32             : };
      33           1 : 
      34             : struct attribute_group {
      35             :         const char              *name;
      36             :         mode_t                  (*is_visible)(struct kobject *,
      37             :                                               struct attribute *, int);
      38             :         struct attribute        **attrs;
      39             : };
      40           1 : 
      41             : 
      42             : 
      43             : /**
      44             :  * Use these macros to make defining attributes easier. See include/linux/device.h
      45             :  * for examples..
      46             :  */
      47             : 
      48             : #define __ATTR(_name,_mode,_show,_store) { \
      49             :         .attr = {.name = __stringify(_name), .mode = _mode },   \
      50             :         .show   = _show,                                        \
      51             :         .store  = _store,                                       \
      52             : }
      53             : 
      54             : #define __ATTR_RO(_name) { \
      55             :         .attr   = { .name = __stringify(_name), .mode = 0444 }, \
      56             :         .show   = _name##_show,                                 \
      57             : }
      58             : 
      59             : #define __ATTR_NULL { .attr = { .name = NULL } }
      60             : 
      61             : #define attr_name(_attr) (_attr).attr.name
      62             : 
      63             : struct vm_area_struct;
      64             : 
      65             : struct bin_attribute {
      66             :         struct attribute        attr;
      67             :         size_t                  size;
      68             :         void                    *private;
      69             :         ssize_t (*read)(struct kobject *, struct bin_attribute *,
      70             :                         char *, loff_t, size_t);
      71             :         ssize_t (*write)(struct kobject *, struct bin_attribute *,
      72             :                          char *, loff_t, size_t);
      73             :         int (*mmap)(struct kobject *, struct bin_attribute *attr,
      74             :                     struct vm_area_struct *vma);
      75           1 : };
      76             : 
      77             : struct sysfs_ops {
      78             :         ssize_t (*show)(struct kobject *, struct attribute *,char *);
      79             :         ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t);
      80             : };
      81           1 : 
      82             : struct sysfs_dirent;
      83             : 
      84             : #ifdef CONFIG_SYSFS
      85             : 
      86             : int sysfs_schedule_callback(struct kobject *kobj, void (*func)(void *),
      87             :                             void *data, struct module *owner);
      88             : 
      89             : int __must_check sysfs_create_dir(struct kobject *kobj);
      90             : void sysfs_remove_dir(struct kobject *kobj);
      91             : int __must_check sysfs_rename_dir(struct kobject *kobj, const char *new_name);
      92             : int __must_check sysfs_move_dir(struct kobject *kobj,
      93             :                                 struct kobject *new_parent_kobj);
      94             : 
      95             : int __must_check sysfs_create_file(struct kobject *kobj,
      96             :                                    const struct attribute *attr);
      97             : int __must_check sysfs_chmod_file(struct kobject *kobj, struct attribute *attr,
      98             :                                   mode_t mode);
      99             : void sysfs_remove_file(struct kobject *kobj, const struct attribute *attr);
     100             : 
     101             : int __must_check sysfs_create_bin_file(struct kobject *kobj,
     102             :                                        const struct bin_attribute *attr);
     103             : void sysfs_remove_bin_file(struct kobject *kobj,
     104             :                            const struct bin_attribute *attr);
     105             : 
     106             : int __must_check sysfs_create_link(struct kobject *kobj, struct kobject *target,
     107             :                                    const char *name);
     108             : int __must_check sysfs_create_link_nowarn(struct kobject *kobj,
     109             :                                           struct kobject *target,
     110             :                                           const char *name);
     111             : void sysfs_remove_link(struct kobject *kobj, const char *name);
     112             : 
     113             : int __must_check sysfs_create_group(struct kobject *kobj,
     114             :                                     const struct attribute_group *grp);
     115             : int sysfs_update_group(struct kobject *kobj,
     116             :                        const struct attribute_group *grp);
     117             : void sysfs_remove_group(struct kobject *kobj,
     118             :                         const struct attribute_group *grp);
     119             : int sysfs_add_file_to_group(struct kobject *kobj,
     120             :                         const struct attribute *attr, const char *group);
     121             : void sysfs_remove_file_from_group(struct kobject *kobj,
     122             :                         const struct attribute *attr, const char *group);
     123             : 
     124             : void sysfs_notify(struct kobject *kobj, const char *dir, const char *attr);
     125             : void sysfs_notify_dirent(struct sysfs_dirent *sd);
     126             : struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd,
     127             :                                       const unsigned char *name);
     128             : struct sysfs_dirent *sysfs_get(struct sysfs_dirent *sd);
     129             : void sysfs_put(struct sysfs_dirent *sd);
     130             : void sysfs_printk_last_file(void);
     131             : int __must_check sysfs_init(void);
     132           1 : 
     133           1 : #else /* CONFIG_SYSFS */
     134           7 : 
     135             : static inline int sysfs_schedule_callback(struct kobject *kobj,
     136             :                 void (*func)(void *), void *data, struct module *owner)
     137             : {
     138             :         return -ENOSYS;
     139             : }
     140             : 
     141             : static inline int sysfs_create_dir(struct kobject *kobj)
     142             : {
     143             :         return 0;
     144             : }
     145             : 
     146             : static inline void sysfs_remove_dir(struct kobject *kobj)
     147             : {
     148             : }
     149             : 
     150             : static inline int sysfs_rename_dir(struct kobject *kobj, const char *new_name)
     151             : {
     152             :         return 0;
     153             : }
     154             : 
     155             : static inline int sysfs_move_dir(struct kobject *kobj,
     156             :                                  struct kobject *new_parent_kobj)
     157             : {
     158             :         return 0;
     159             : }
     160             : 
     161             : static inline int sysfs_create_file(struct kobject *kobj,
     162             :                                     const struct attribute *attr)
     163             : {
     164             :         return 0;
     165             : }
     166             : 
     167             : static inline int sysfs_chmod_file(struct kobject *kobj,
     168             :                                    struct attribute *attr, mode_t mode)
     169             : {
     170             :         return 0;
     171             : }
     172             : 
     173             : static inline void sysfs_remove_file(struct kobject *kobj,
     174             :                                      const struct attribute *attr)
     175             : {
     176             : }
     177             : 
     178             : static inline int sysfs_create_bin_file(struct kobject *kobj,
     179             :                                         const struct bin_attribute *attr)
     180             : {
     181             :         return 0;
     182             : }
     183             : 
     184             : static inline void sysfs_remove_bin_file(struct kobject *kobj,
     185             :                                          const struct bin_attribute *attr)
     186             : {
     187             : }
     188             : 
     189             : static inline int sysfs_create_link(struct kobject *kobj,
     190             :                                     struct kobject *target, const char *name)
     191             : {
     192             :         return 0;
     193             : }
     194             : 
     195             : static inline int sysfs_create_link_nowarn(struct kobject *kobj,
     196             :                                            struct kobject *target,
     197             :                                            const char *name)
     198             : {
     199             :         return 0;
     200             : }
     201             : 
     202             : static inline void sysfs_remove_link(struct kobject *kobj, const char *name)
     203             : {
     204             : }
     205             : 
     206             : static inline int sysfs_create_group(struct kobject *kobj,
     207             :                                      const struct attribute_group *grp)
     208             : {
     209             :         return 0;
     210             : }
     211             : 
     212             : static inline int sysfs_update_group(struct kobject *kobj,
     213             :                                 const struct attribute_group *grp)
     214             : {
     215             :         return 0;
     216             : }
     217             : 
     218             : static inline void sysfs_remove_group(struct kobject *kobj,
     219             :                                       const struct attribute_group *grp)
     220             : {
     221             : }
     222             : 
     223             : static inline int sysfs_add_file_to_group(struct kobject *kobj,
     224             :                 const struct attribute *attr, const char *group)
     225             : {
     226             :         return 0;
     227             : }
     228             : 
     229             : static inline void sysfs_remove_file_from_group(struct kobject *kobj,
     230             :                 const struct attribute *attr, const char *group)
     231             : {
     232             : }
     233             : 
     234             : static inline void sysfs_notify(struct kobject *kobj, const char *dir,
     235             :                                 const char *attr)
     236             : {
     237             : }
     238             : static inline void sysfs_notify_dirent(struct sysfs_dirent *sd)
     239             : {
     240             : }
     241             : static inline
     242             : struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd,
     243             :                                       const unsigned char *name)
     244             : {
     245             :         return NULL;
     246             : }
     247             : static inline struct sysfs_dirent *sysfs_get(struct sysfs_dirent *sd)
     248             : {
     249             :         return NULL;
     250             : }
     251             : static inline void sysfs_put(struct sysfs_dirent *sd)
     252             : {
     253             : }
     254             : 
     255             : static inline int __must_check sysfs_init(void)
     256             : {
     257             :         return 0;
     258             : }
     259             : 
     260             : static inline void sysfs_printk_last_file(void)
     261             : {
     262             : }
     263             : 
     264             : #endif /* CONFIG_SYSFS */
     265             : 
     266             : #endif /* _SYSFS_H_ */

Generated by: LCOV version 1.10