#include <linux/proc_fs.h>
#include <linux/device.h>
#include <linux/seq_file.h>
#include <linux/uaccess.h>
#include "gru.h"
#include "grulib.h"
#include "grutables.h"
#define printstat(s, f) …
static void printstat_val(struct seq_file *s, atomic_long_t *v, char *id)
{ … }
static int statistics_show(struct seq_file *s, void *p)
{ … }
static ssize_t statistics_write(struct file *file, const char __user *userbuf,
size_t count, loff_t *data)
{ … }
static int mcs_statistics_show(struct seq_file *s, void *p)
{ … }
static ssize_t mcs_statistics_write(struct file *file,
const char __user *userbuf, size_t count, loff_t *data)
{ … }
static int options_show(struct seq_file *s, void *p)
{ … }
static ssize_t options_write(struct file *file, const char __user *userbuf,
size_t count, loff_t *data)
{ … }
static int cch_seq_show(struct seq_file *file, void *data)
{ … }
static int gru_seq_show(struct seq_file *file, void *data)
{ … }
static void seq_stop(struct seq_file *file, void *data)
{ … }
static void *seq_start(struct seq_file *file, loff_t *gid)
{ … }
static void *seq_next(struct seq_file *file, void *data, loff_t *gid)
{ … }
static const struct seq_operations cch_seq_ops = …;
static const struct seq_operations gru_seq_ops = …;
static int statistics_open(struct inode *inode, struct file *file)
{ … }
static int mcs_statistics_open(struct inode *inode, struct file *file)
{ … }
static int options_open(struct inode *inode, struct file *file)
{ … }
static const struct proc_ops statistics_proc_ops = …;
static const struct proc_ops mcs_statistics_proc_ops = …;
static const struct proc_ops options_proc_ops = …;
static struct proc_dir_entry *proc_gru __read_mostly;
int gru_proc_init(void)
{ … }
void gru_proc_exit(void)
{ … }