root/include/linux/attribute_container.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. attribute_container_no_classdevs
  2. attribute_container_set_no_classdevs

   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         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         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 void attribute_container_trigger(struct device *dev, 
  58                                  int (*fn)(struct attribute_container *,
  59                                            struct device *));
  60 int attribute_container_add_attrs(struct device *classdev);
  61 int attribute_container_add_class_device(struct device *classdev);
  62 int attribute_container_add_class_device_adapter(struct attribute_container *cont,
  63                                                  struct device *dev,
  64                                                  struct device *classdev);
  65 void attribute_container_remove_attrs(struct device *classdev);
  66 void attribute_container_class_device_del(struct device *classdev);
  67 struct attribute_container *attribute_container_classdev_to_container(struct device *);
  68 struct device *attribute_container_find_class_device(struct attribute_container *, struct device *);
  69 struct device_attribute **attribute_container_classdev_to_attrs(const struct device *classdev);
  70 
  71 #endif

/* [<][>][^][v][top][bottom][index][help] */