#include <linux/irq.h>
#include <linux/gfp.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/interrupt.h>
#include <linux/kernel_stat.h>
#include <linux/mutex.h>
#include "internals.h"
static struct proc_dir_entry *root_irq_dir;
#ifdef CONFIG_SMP
enum { … };
static int show_irq_affinity(int type, struct seq_file *m)
{ … }
static int irq_affinity_hint_proc_show(struct seq_file *m, void *v)
{ … }
int no_irq_affinity;
static int irq_affinity_proc_show(struct seq_file *m, void *v)
{ … }
static int irq_affinity_list_proc_show(struct seq_file *m, void *v)
{ … }
#ifndef CONFIG_AUTO_IRQ_AFFINITY
static inline int irq_select_affinity_usr(unsigned int irq)
{ … }
#else
static inline int irq_select_affinity_usr(unsigned int irq)
{
return irq_select_affinity(irq);
}
#endif
static ssize_t write_irq_affinity(int type, struct file *file,
const char __user *buffer, size_t count, loff_t *pos)
{ … }
static ssize_t irq_affinity_proc_write(struct file *file,
const char __user *buffer, size_t count, loff_t *pos)
{ … }
static ssize_t irq_affinity_list_proc_write(struct file *file,
const char __user *buffer, size_t count, loff_t *pos)
{ … }
static int irq_affinity_proc_open(struct inode *inode, struct file *file)
{ … }
static int irq_affinity_list_proc_open(struct inode *inode, struct file *file)
{ … }
static const struct proc_ops irq_affinity_proc_ops = …;
static const struct proc_ops irq_affinity_list_proc_ops = …;
#ifdef CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK
static int irq_effective_aff_proc_show(struct seq_file *m, void *v)
{ … }
static int irq_effective_aff_list_proc_show(struct seq_file *m, void *v)
{ … }
#endif
static int default_affinity_show(struct seq_file *m, void *v)
{ … }
static ssize_t default_affinity_write(struct file *file,
const char __user *buffer, size_t count, loff_t *ppos)
{ … }
static int default_affinity_open(struct inode *inode, struct file *file)
{ … }
static const struct proc_ops default_affinity_proc_ops = …;
static int irq_node_proc_show(struct seq_file *m, void *v)
{ … }
#endif
static int irq_spurious_proc_show(struct seq_file *m, void *v)
{ … }
#define MAX_NAMELEN …
static int name_unique(unsigned int irq, struct irqaction *new_action)
{ … }
void register_handler_proc(unsigned int irq, struct irqaction *action)
{ … }
#undef MAX_NAMELEN
#define MAX_NAMELEN …
void register_irq_proc(unsigned int irq, struct irq_desc *desc)
{ … }
void unregister_irq_proc(unsigned int irq, struct irq_desc *desc)
{ … }
#undef MAX_NAMELEN
void unregister_handler_proc(unsigned int irq, struct irqaction *action)
{ … }
static void register_default_affinity_proc(void)
{ … }
void init_irq_proc(void)
{ … }
#ifdef CONFIG_GENERIC_IRQ_SHOW
int __weak arch_show_interrupts(struct seq_file *p, int prec)
{ … }
#ifndef ACTUAL_NR_IRQS
#define ACTUAL_NR_IRQS …
#endif
int show_interrupts(struct seq_file *p, void *v)
{ … }
#endif