#include <linux/cdev.h>
#include <linux/counter.h>
#include <linux/err.h>
#include <linux/errno.h>
#include <linux/export.h>
#include <linux/fs.h>
#include <linux/kfifo.h>
#include <linux/list.h>
#include <linux/mutex.h>
#include <linux/nospec.h>
#include <linux/poll.h>
#include <linux/slab.h>
#include <linux/spinlock.h>
#include <linux/timekeeping.h>
#include <linux/types.h>
#include <linux/uaccess.h>
#include <linux/wait.h>
#include "counter-chrdev.h"
struct counter_comp_node { … };
#define counter_comp_read_is_equal(a, b) …
#define counter_comp_read_is_set(comp) …
static ssize_t counter_chrdev_read(struct file *filp, char __user *buf,
size_t len, loff_t *f_ps)
{ … }
static __poll_t counter_chrdev_poll(struct file *filp,
struct poll_table_struct *pollt)
{ … }
static void counter_events_list_free(struct list_head *const events_list)
{ … }
static int counter_set_event_node(struct counter_device *const counter,
struct counter_watch *const watch,
const struct counter_comp_node *const cfg)
{ … }
static int counter_enable_events(struct counter_device *const counter)
{ … }
static int counter_disable_events(struct counter_device *const counter)
{ … }
static int counter_get_ext(const struct counter_comp *const ext,
const size_t num_ext, const size_t component_id,
size_t *const ext_idx, size_t *const id)
{ … }
static int counter_add_watch(struct counter_device *const counter,
const unsigned long arg)
{ … }
static long counter_chrdev_ioctl(struct file *filp, unsigned int cmd,
unsigned long arg)
{ … }
static int counter_chrdev_open(struct inode *inode, struct file *filp)
{ … }
static int counter_chrdev_release(struct inode *inode, struct file *filp)
{ … }
static const struct file_operations counter_fops = …;
int counter_chrdev_add(struct counter_device *const counter)
{ … }
void counter_chrdev_remove(struct counter_device *const counter)
{ … }
static int counter_get_array_data(struct counter_device *const counter,
const enum counter_scope scope,
void *const parent,
const struct counter_comp *const comp,
const size_t idx, u64 *const value)
{ … }
static int counter_get_data(struct counter_device *const counter,
const struct counter_comp_node *const comp_node,
u64 *const value)
{ … }
void counter_push_event(struct counter_device *const counter, const u8 event,
const u8 channel)
{ … }
EXPORT_SYMBOL_NS_GPL(…);