1c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner/****************************************************************************
2c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ****************************************************************************
3c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***
4c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   This header was automatically generated from a Linux kernel header
5c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   of the same name, to make information necessary for userspace to
6c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   call into the kernel available to libc.  It contains only constants,
7c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   structures, and macros generated from the original header, and thus,
8c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   contains no copyrightable information.
9c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***
10c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ****************************************************************************
11c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ****************************************************************************/
12c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#ifndef _TRANSPORT_CLASS_H_
13c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define _TRANSPORT_CLASS_H_
14c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
15c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/device.h>
16c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/attribute_container.h>
17c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
18c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerstruct transport_container;
19c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
20c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerstruct transport_class {
21c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner struct class class;
22c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner int (*setup)(struct transport_container *, struct device *,
23c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner struct class_device *);
24c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner int (*configure)(struct transport_container *, struct device *,
25c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner struct class_device *);
26c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner int (*remove)(struct transport_container *, struct device *,
27c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner struct class_device *);
28c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner};
29c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
30c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define DECLARE_TRANSPORT_CLASS(cls, nm, su, rm, cfg)  struct transport_class cls = {   .class = {   .name = nm,   },   .setup = su,   .remove = rm,   .configure = cfg,  }
31c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
32c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerstruct anon_transport_class {
33c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner struct transport_class tclass;
34c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner struct attribute_container container;
35c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner};
36c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
37c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define DECLARE_ANON_TRANSPORT_CLASS(cls, mtch, cfg)  struct anon_transport_class cls = {   .tclass = {   .configure = cfg,   },   . container = {   .match = mtch,   },  }
38c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
39c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define class_to_transport_class(x)   container_of(x, struct transport_class, class)
40c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
41c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerstruct transport_container {
42c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner struct attribute_container ac;
43c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner struct attribute_group *statistics;
44c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner};
45c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
46c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define attribute_container_to_transport_container(x)   container_of(x, struct transport_container, ac)
47c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
48c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#endif
49