Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
attribute_container.h
Go to the documentation of this file.
1 /*
2  * attribute_container.h - a generic container for all classes
3  *
4  * Copyright (c) 2005 - James Bottomley <[email protected]>
5  *
6  * This file is licensed under GPLv2
7  */
8 
9 #ifndef _ATTRIBUTE_CONTAINER_H_
10 #define _ATTRIBUTE_CONTAINER_H_
11 
12 #include <linux/list.h>
13 #include <linux/klist.h>
14 
15 struct device;
16 
18  struct list_head node;
19  struct klist containers;
20  struct class *class;
21  const struct attribute_group *grp;
23  int (*match)(struct attribute_container *, struct device *);
24 #define ATTRIBUTE_CONTAINER_NO_CLASSDEVS 0x01
25  unsigned long flags;
26 };
27 
28 static inline int
29 attribute_container_no_classdevs(struct attribute_container *atc)
30 {
32 }
33 
34 static inline void
35 attribute_container_set_no_classdevs(struct attribute_container *atc)
36 {
38 }
39 
43  int (*fn)(struct attribute_container *,
44  struct device *,
45  struct device *));
46 void attribute_container_add_device(struct device *dev,
47  int (*fn)(struct attribute_container *,
48  struct device *,
49  struct device *));
51  void (*fn)(struct attribute_container *,
52  struct device *,
53  struct device *));
55  int (*fn)(struct attribute_container *,
56  struct device *,
57  struct device *));
58 void attribute_container_trigger(struct device *dev,
59  int (*fn)(struct attribute_container *,
60  struct device *));
61 int attribute_container_add_attrs(struct device *classdev);
62 int attribute_container_add_class_device(struct device *classdev);
64  struct device *dev,
65  struct device *classdev);
66 void attribute_container_remove_attrs(struct device *classdev);
67 void attribute_container_class_device_del(struct device *classdev);
70 struct device_attribute **attribute_container_classdev_to_attrs(const struct device *classdev);
71 
72 #endif