Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
dca.h
Go to the documentation of this file.
1
/*
2
* Copyright(c) 2007 - 2009 Intel Corporation. All rights reserved.
3
*
4
* This program is free software; you can redistribute it and/or modify it
5
* under the terms of the GNU General Public License as published by the Free
6
* Software Foundation; either version 2 of the License, or (at your option)
7
* any later version.
8
*
9
* This program is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12
* more details.
13
*
14
* You should have received a copy of the GNU General Public License along with
15
* this program; if not, write to the Free Software Foundation, Inc., 59
16
* Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
*
18
* The full GNU General Public License is included in this distribution in the
19
* file called COPYING.
20
*/
21
#ifndef DCA_H
22
#define DCA_H
23
24
#include <linux/pci.h>
25
26
/* DCA Provider API */
27
28
/* DCA Notifier Interface */
29
void
dca_register_notify
(
struct
notifier_block
*nb);
30
void
dca_unregister_notify
(
struct
notifier_block
*nb);
31
32
#define DCA_PROVIDER_ADD 0x0001
33
#define DCA_PROVIDER_REMOVE 0x0002
34
35
struct
dca_provider
{
36
struct
list_head
node
;
37
struct
dca_ops
*
ops
;
38
struct
device
*
cd
;
39
int
id
;
40
};
41
42
struct
dca_domain
{
43
struct
list_head
node
;
44
struct
list_head
dca_providers
;
45
struct
pci_bus
*
pci_rc
;
46
};
47
48
struct
dca_ops
{
49
int
(*
add_requester
) (
struct
dca_provider
*,
struct
device
*);
50
int
(*
remove_requester
) (
struct
dca_provider
*,
struct
device
*);
51
u8
(*
get_tag
) (
struct
dca_provider
*,
struct
device
*,
52
int
cpu
);
53
int
(*
dev_managed
) (
struct
dca_provider
*,
struct
device
*);
54
};
55
56
struct
dca_provider
*
alloc_dca_provider
(
struct
dca_ops
*
ops
,
int
priv_size);
57
void
free_dca_provider
(
struct
dca_provider
*dca);
58
int
register_dca_provider
(
struct
dca_provider
*dca,
struct
device
*
dev
);
59
void
unregister_dca_provider
(
struct
dca_provider
*dca,
struct
device
*
dev
);
60
61
static
inline
void
*dca_priv(
struct
dca_provider
*dca)
62
{
63
return
(
void
*)dca +
sizeof
(
struct
dca_provider
);
64
}
65
66
/* Requester API */
67
#define DCA_GET_TAG_TWO_ARGS
68
int
dca_add_requester
(
struct
device
*
dev
);
69
int
dca_remove_requester
(
struct
device
*
dev
);
70
u8
dca_get_tag
(
int
cpu
);
71
u8
dca3_get_tag
(
struct
device
*
dev
,
int
cpu
);
72
73
/* internal stuff */
74
int
__init
dca_sysfs_init
(
void
);
75
void
__exit
dca_sysfs_exit
(
void
);
76
int
dca_sysfs_add_provider
(
struct
dca_provider
*dca,
struct
device
*
dev
);
77
void
dca_sysfs_remove_provider
(
struct
dca_provider
*dca);
78
int
dca_sysfs_add_req
(
struct
dca_provider
*dca,
struct
device
*
dev
,
int
slot
);
79
void
dca_sysfs_remove_req
(
struct
dca_provider
*dca,
int
slot
);
80
81
#endif
/* DCA_H */
Generated on Thu Jan 10 2013 14:51:17 for Linux Kernel by
1.8.2