Blame view

include/linux/attribute_container.h 2.51 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
  /*
   * class_container.h - a generic container for all classes
   *
   * Copyright (c) 2005 - James Bottomley <James.Bottomley@steeleye.com>
   *
   * This file is licensed under GPLv2
   */
  
  #ifndef _ATTRIBUTE_CONTAINER_H_
  #define _ATTRIBUTE_CONTAINER_H_
  
  #include <linux/device.h>
  #include <linux/list.h>
53c165e0a   James Bottomley   [SCSI] correct at...
14
  #include <linux/klist.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
15
16
17
  
  struct attribute_container {
  	struct list_head	node;
53c165e0a   James Bottomley   [SCSI] correct at...
18
  	struct klist		containers;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
  	struct class		*class;
  	struct class_device_attribute **attrs;
  	int (*match)(struct attribute_container *, struct device *);
  #define	ATTRIBUTE_CONTAINER_NO_CLASSDEVS	0x01
  	unsigned long		flags;
  };
  
  static inline int
  attribute_container_no_classdevs(struct attribute_container *atc)
  {
  	return atc->flags & ATTRIBUTE_CONTAINER_NO_CLASSDEVS;
  }
  
  static inline void
  attribute_container_set_no_classdevs(struct attribute_container *atc)
  {
  	atc->flags |= ATTRIBUTE_CONTAINER_NO_CLASSDEVS;
  }
  
  int attribute_container_register(struct attribute_container *cont);
  int attribute_container_unregister(struct attribute_container *cont);
  void attribute_container_create_device(struct device *dev,
  				       int (*fn)(struct attribute_container *,
  						 struct device *,
  						 struct class_device *));
  void attribute_container_add_device(struct device *dev,
  				    int (*fn)(struct attribute_container *,
  					      struct device *,
  					      struct class_device *));
  void attribute_container_remove_device(struct device *dev,
  				       void (*fn)(struct attribute_container *,
  						  struct device *,
  						  struct class_device *));
  void attribute_container_device_trigger(struct device *dev, 
  					int (*fn)(struct attribute_container *,
  						  struct device *,
  						  struct class_device *));
  void attribute_container_trigger(struct device *dev, 
  				 int (*fn)(struct attribute_container *,
  					   struct device *));
  int attribute_container_add_attrs(struct class_device *classdev);
  int attribute_container_add_class_device(struct class_device *classdev);
  int attribute_container_add_class_device_adapter(struct attribute_container *cont,
  						 struct device *dev,
  						 struct class_device *classdev);
  void attribute_container_remove_attrs(struct class_device *classdev);
  void attribute_container_class_device_del(struct class_device *classdev);
caca17798   James Bottomley   [SCSI] add missin...
66
  struct attribute_container *attribute_container_classdev_to_container(struct class_device *);
d0a7e5740   James Bottomley   [SCSI] correct tr...
67
  struct class_device *attribute_container_find_class_device(struct attribute_container *, struct device *);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
68
69
70
  struct class_device_attribute **attribute_container_classdev_to_attrs(const struct class_device *classdev);
  
  #endif