#include <linux/compat.h>
#include <linux/dma-mapping.h>
#include <linux/iommu.h>
#include <linux/module.h>
#include <linux/poll.h>
#include <linux/slab.h>
#include <linux/uacce.h>
static dev_t uacce_devt;
static DEFINE_XARRAY_ALLOC(uacce_xa);
static const struct class uacce_class = …;
static bool uacce_queue_is_valid(struct uacce_queue *q)
{ … }
static int uacce_start_queue(struct uacce_queue *q)
{ … }
static int uacce_put_queue(struct uacce_queue *q)
{ … }
static long uacce_fops_unl_ioctl(struct file *filep,
unsigned int cmd, unsigned long arg)
{ … }
#ifdef CONFIG_COMPAT
static long uacce_fops_compat_ioctl(struct file *filep,
unsigned int cmd, unsigned long arg)
{ … }
#endif
static int uacce_bind_queue(struct uacce_device *uacce, struct uacce_queue *q)
{ … }
static void uacce_unbind_queue(struct uacce_queue *q)
{ … }
static int uacce_fops_open(struct inode *inode, struct file *filep)
{ … }
static int uacce_fops_release(struct inode *inode, struct file *filep)
{ … }
static void uacce_vma_close(struct vm_area_struct *vma)
{ … }
static const struct vm_operations_struct uacce_vm_ops = …;
static int uacce_fops_mmap(struct file *filep, struct vm_area_struct *vma)
{ … }
static __poll_t uacce_fops_poll(struct file *file, poll_table *wait)
{ … }
static const struct file_operations uacce_fops = …;
#define to_uacce_device(dev) …
static ssize_t api_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static ssize_t flags_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static ssize_t available_instances_show(struct device *dev,
struct device_attribute *attr,
char *buf)
{ … }
static ssize_t algorithms_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static ssize_t region_mmio_size_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static ssize_t region_dus_size_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static ssize_t isolate_show(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static ssize_t isolate_strategy_show(struct device *dev, struct device_attribute *attr, char *buf)
{ … }
static ssize_t isolate_strategy_store(struct device *dev, struct device_attribute *attr,
const char *buf, size_t count)
{ … }
static DEVICE_ATTR_RO(api);
static DEVICE_ATTR_RO(flags);
static DEVICE_ATTR_RO(available_instances);
static DEVICE_ATTR_RO(algorithms);
static DEVICE_ATTR_RO(region_mmio_size);
static DEVICE_ATTR_RO(region_dus_size);
static DEVICE_ATTR_RO(isolate);
static DEVICE_ATTR_RW(isolate_strategy);
static struct attribute *uacce_dev_attrs[] = …;
static umode_t uacce_dev_is_visible(struct kobject *kobj,
struct attribute *attr, int n)
{ … }
static struct attribute_group uacce_dev_group = …;
__ATTRIBUTE_GROUPS(…);
static void uacce_release(struct device *dev)
{ … }
static unsigned int uacce_enable_sva(struct device *parent, unsigned int flags)
{ … }
static void uacce_disable_sva(struct uacce_device *uacce)
{ … }
struct uacce_device *uacce_alloc(struct device *parent,
struct uacce_interface *interface)
{ … }
EXPORT_SYMBOL_GPL(…);
int uacce_register(struct uacce_device *uacce)
{ … }
EXPORT_SYMBOL_GPL(…);
void uacce_remove(struct uacce_device *uacce)
{ … }
EXPORT_SYMBOL_GPL(…);
static int __init uacce_init(void)
{ … }
static __exit void uacce_exit(void)
{ … }
subsys_initcall(uacce_init);
module_exit(uacce_exit);
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;