LCOV - code coverage report
Current view: top level - include/linux - attribute_container.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 2 0.0 %
Date: 2023-08-24 13:40:31 Functions: 0 0 -

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0-only */
       2             : /*
       3             :  * attribute_container.h - a generic container for all classes
       4             :  *
       5             :  * Copyright (c) 2005 - James Bottomley <James.Bottomley@steeleye.com>
       6             :  */
       7             : 
       8             : #ifndef _ATTRIBUTE_CONTAINER_H_
       9             : #define _ATTRIBUTE_CONTAINER_H_
      10             : 
      11             : #include <linux/list.h>
      12             : #include <linux/klist.h>
      13             : 
      14             : struct device;
      15             : 
      16             : struct attribute_container {
      17             :         struct list_head        node;
      18             :         struct klist            containers;
      19             :         struct class            *class;
      20             :         const struct attribute_group *grp;
      21             :         struct device_attribute **attrs;
      22             :         int (*match)(struct attribute_container *, struct device *);
      23             : #define ATTRIBUTE_CONTAINER_NO_CLASSDEVS        0x01
      24             :         unsigned long           flags;
      25             : };
      26             : 
      27             : static inline int
      28             : attribute_container_no_classdevs(struct attribute_container *atc)
      29             : {
      30           0 :         return atc->flags & ATTRIBUTE_CONTAINER_NO_CLASSDEVS;
      31             : }
      32             : 
      33             : static inline void
      34             : attribute_container_set_no_classdevs(struct attribute_container *atc)
      35             : {
      36           0 :         atc->flags |= ATTRIBUTE_CONTAINER_NO_CLASSDEVS;
      37             : }
      38             : 
      39             : int attribute_container_register(struct attribute_container *cont);
      40             : int __must_check attribute_container_unregister(struct attribute_container *cont);
      41             : void attribute_container_create_device(struct device *dev,
      42             :                                        int (*fn)(struct attribute_container *,
      43             :                                                  struct device *,
      44             :                                                  struct device *));
      45             : void attribute_container_add_device(struct device *dev,
      46             :                                     int (*fn)(struct attribute_container *,
      47             :                                               struct device *,
      48             :                                               struct device *));
      49             : void attribute_container_remove_device(struct device *dev,
      50             :                                        void (*fn)(struct attribute_container *,
      51             :                                                   struct device *,
      52             :                                                   struct device *));
      53             : void attribute_container_device_trigger(struct device *dev, 
      54             :                                         int (*fn)(struct attribute_container *,
      55             :                                                   struct device *,
      56             :                                                   struct device *));
      57             : int attribute_container_device_trigger_safe(struct device *dev,
      58             :                                             int (*fn)(struct attribute_container *,
      59             :                                                       struct device *,
      60             :                                                       struct device *),
      61             :                                             int (*undo)(struct attribute_container *,
      62             :                                                         struct device *,
      63             :                                                         struct device *));
      64             : void attribute_container_trigger(struct device *dev, 
      65             :                                  int (*fn)(struct attribute_container *,
      66             :                                            struct device *));
      67             : int attribute_container_add_attrs(struct device *classdev);
      68             : int attribute_container_add_class_device(struct device *classdev);
      69             : int attribute_container_add_class_device_adapter(struct attribute_container *cont,
      70             :                                                  struct device *dev,
      71             :                                                  struct device *classdev);
      72             : void attribute_container_remove_attrs(struct device *classdev);
      73             : void attribute_container_class_device_del(struct device *classdev);
      74             : struct attribute_container *attribute_container_classdev_to_container(struct device *);
      75             : struct device *attribute_container_find_class_device(struct attribute_container *, struct device *);
      76             : struct device_attribute **attribute_container_classdev_to_attrs(const struct device *classdev);
      77             : 
      78             : #endif

Generated by: LCOV version 1.14