#include <asm/page.h>
#include <linux/uaccess.h>
#include <linux/ctype.h>
#include <linux/highmem.h>
#include <linux/init.h>
#include <linux/jiffies.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/smp.h>
#include <linux/spinlock.h>
#include <linux/sysctl.h>
#include <linux/timer.h>
#include "edac_device.h"
#include "edac_module.h"
static DEFINE_MUTEX(device_ctls_mutex);
static LIST_HEAD(edac_device_list);
#define DEFAULT_POLL_INTERVAL …
#ifdef CONFIG_EDAC_DEBUG
static void edac_device_dump_device(struct edac_device_ctl_info *edac_dev)
{ … }
#endif
struct edac_device_ctl_info *
edac_device_alloc_ctl_info(unsigned pvt_sz, char *dev_name, unsigned nr_instances,
char *blk_name, unsigned nr_blocks, unsigned off_val,
int device_index)
{ … }
EXPORT_SYMBOL_GPL(…);
void edac_device_free_ctl_info(struct edac_device_ctl_info *ctl_info)
{ … }
EXPORT_SYMBOL_GPL(…);
static struct edac_device_ctl_info *find_edac_device_by_dev(struct device *dev)
{ … }
static int add_edac_dev_to_global_list(struct edac_device_ctl_info *edac_dev)
{ … }
static void del_edac_device_from_global_list(struct edac_device_ctl_info
*edac_device)
{ … }
static void edac_device_workq_function(struct work_struct *work_req)
{ … }
static void edac_device_workq_setup(struct edac_device_ctl_info *edac_dev,
unsigned msec)
{ … }
static void edac_device_workq_teardown(struct edac_device_ctl_info *edac_dev)
{ … }
void edac_device_reset_delay_period(struct edac_device_ctl_info *edac_dev,
unsigned long msec)
{ … }
int edac_device_alloc_index(void)
{ … }
EXPORT_SYMBOL_GPL(…);
int edac_device_add_device(struct edac_device_ctl_info *edac_dev)
{ … }
EXPORT_SYMBOL_GPL(…);
struct edac_device_ctl_info *edac_device_del_device(struct device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
static inline int edac_device_get_log_ce(struct edac_device_ctl_info *edac_dev)
{ … }
static inline int edac_device_get_log_ue(struct edac_device_ctl_info *edac_dev)
{ … }
static inline int edac_device_get_panic_on_ue(struct edac_device_ctl_info
*edac_dev)
{ … }
void edac_device_handle_ce_count(struct edac_device_ctl_info *edac_dev,
unsigned int count, int inst_nr, int block_nr,
const char *msg)
{ … }
EXPORT_SYMBOL_GPL(…);
void edac_device_handle_ue_count(struct edac_device_ctl_info *edac_dev,
unsigned int count, int inst_nr, int block_nr,
const char *msg)
{ … }
EXPORT_SYMBOL_GPL(…);