#include <linux/kernel.h>
#include <linux/notifier.h>
#include <linux/device.h>
#include <linux/dca.h>
#include <linux/slab.h>
#include <linux/module.h>
#define DCA_VERSION …
MODULE_VERSION(…);
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
static DEFINE_RAW_SPINLOCK(dca_lock);
static LIST_HEAD(dca_domains);
static BLOCKING_NOTIFIER_HEAD(dca_provider_chain);
static int dca_providers_blocked;
static struct pci_bus *dca_pci_rc_from_dev(struct device *dev)
{ … }
static struct dca_domain *dca_allocate_domain(struct pci_bus *rc)
{ … }
static void dca_free_domain(struct dca_domain *domain)
{ … }
static int dca_provider_ioat_ver_3_0(struct device *dev)
{ … }
static void unregister_dca_providers(void)
{ … }
static struct dca_domain *dca_find_domain(struct pci_bus *rc)
{ … }
static struct dca_domain *dca_get_domain(struct device *dev)
{ … }
static struct dca_provider *dca_find_provider_by_dev(struct device *dev)
{ … }
int dca_add_requester(struct device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
int dca_remove_requester(struct device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
static u8 dca_common_get_tag(struct device *dev, int cpu)
{ … }
u8 dca3_get_tag(struct device *dev, int cpu)
{ … }
EXPORT_SYMBOL_GPL(…);
u8 dca_get_tag(int cpu)
{ … }
EXPORT_SYMBOL_GPL(…);
struct dca_provider *alloc_dca_provider(const struct dca_ops *ops,
int priv_size)
{ … }
EXPORT_SYMBOL_GPL(…);
void free_dca_provider(struct dca_provider *dca)
{ … }
EXPORT_SYMBOL_GPL(…);
int register_dca_provider(struct dca_provider *dca, struct device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
void unregister_dca_provider(struct dca_provider *dca, struct device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
void dca_register_notify(struct notifier_block *nb)
{ … }
EXPORT_SYMBOL_GPL(…);
void dca_unregister_notify(struct notifier_block *nb)
{ … }
EXPORT_SYMBOL_GPL(…);
static int __init dca_init(void)
{ … }
static void __exit dca_exit(void)
{ … }
arch_initcall(dca_init);
module_exit(dca_exit);