All pastes #809367 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-12-08 21:22 UTC
rendered paste body
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/proc_fs.h>

int my_read(char *, char **, off_t, int, int) ;

/*
 * proc root can do almost nothing..
 */
static struct inode_operations proc_root_inode_operations = {
	&proc_root_operations,	/* default base directory file-ops */
	NULL,			/* create */
	proc_root_lookup,	/* lookup */
	NULL,			/* link */
	NULL,			/* unlink */
	NULL,			/* symlink */
	NULL,			/* mkdir */
	NULL,			/* rmdir */
	NULL,			/* mknod */
	NULL,			/* rename */
	NULL,			/* readlink */
	NULL,			/* follow_link */
	NULL,			/* readpage */
	NULL,			/* writepage */
	NULL,			/* bmap */
	NULL,			/* truncate */
	NULL			/* permission */
};

/*
 * This is the root "inode" in the /proc tree..
 */
struct proc_dir_entry proc_root = {
	PROC_ROOT_INO, 5, "/proc",
	S_IFDIR | S_IRUGO | S_IXUGO, 2, 0, 0,
	0, &proc_root_inode_operations,
	NULL, NULL,
	NULL,
	&proc_root, NULL
};

struct proc_dir_entry my_mod_proc_file = {
  0, 12, "timer_module", S_IFREG | S_IRUGO,
  1, 0, 0, 0, NULL, my_read, NULL};

int int_module() {
  /* proc_root is the root of /proc */
  
  return proc_register(&proc_root, &my_mod_proc_file);
}

void cleanup_module() {
  proc_unregister(&proc_root, my_mod_proc_file.low_ino);
}