mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 19:00:25 +00:00
![Paul Gortmaker](/assets/img/avatar_default.png)
The <linux/device.h> header includes a lot of stuff, and it in turn gets a lot of use just for the basic "struct device" which appears so often. Clean up the users as follows: 1) For those headers only needing "struct device" as a pointer in fcn args, replace the include with exactly that. 2) For headers not really using anything from device.h, simply delete the include altogether. 3) For headers relying on getting device.h implicitly before being included themselves, now explicitly include device.h 4) For files in which doing #1 or #2 uncovers an implicit dependency on some other header, fix by explicitly adding the required header(s). Any C files that were implicitly relying on device.h to be present have already been dealt with in advance. Total removals from #1 and #2: 51. Total additions coming from #3: 9. Total other implicit dependencies from #4: 7. As of 3.3-rc1, there were 110, so a net removal of 42 gives about a 38% reduction in device.h presence in include/* Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
72 lines
2.5 KiB
C
72 lines
2.5 KiB
C
/*
|
|
* attribute_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/list.h>
|
|
#include <linux/klist.h>
|
|
|
|
struct device;
|
|
|
|
struct attribute_container {
|
|
struct list_head node;
|
|
struct klist containers;
|
|
struct class *class;
|
|
const struct attribute_group *grp;
|
|
struct 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 __must_check attribute_container_unregister(struct attribute_container *cont);
|
|
void attribute_container_create_device(struct device *dev,
|
|
int (*fn)(struct attribute_container *,
|
|
struct device *,
|
|
struct device *));
|
|
void attribute_container_add_device(struct device *dev,
|
|
int (*fn)(struct attribute_container *,
|
|
struct device *,
|
|
struct device *));
|
|
void attribute_container_remove_device(struct device *dev,
|
|
void (*fn)(struct attribute_container *,
|
|
struct device *,
|
|
struct device *));
|
|
void attribute_container_device_trigger(struct device *dev,
|
|
int (*fn)(struct attribute_container *,
|
|
struct device *,
|
|
struct device *));
|
|
void attribute_container_trigger(struct device *dev,
|
|
int (*fn)(struct attribute_container *,
|
|
struct device *));
|
|
int attribute_container_add_attrs(struct device *classdev);
|
|
int attribute_container_add_class_device(struct device *classdev);
|
|
int attribute_container_add_class_device_adapter(struct attribute_container *cont,
|
|
struct device *dev,
|
|
struct device *classdev);
|
|
void attribute_container_remove_attrs(struct device *classdev);
|
|
void attribute_container_class_device_del(struct device *classdev);
|
|
struct attribute_container *attribute_container_classdev_to_container(struct device *);
|
|
struct device *attribute_container_find_class_device(struct attribute_container *, struct device *);
|
|
struct device_attribute **attribute_container_classdev_to_attrs(const struct device *classdev);
|
|
|
|
#endif
|