Dette er en gammel udgave af dokumentet!


F-Kernel Modul

Det (officielle?) fklub kernel modul. Originalt lavet af jokke, mchro & kyrke 2006.

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/fs.h>

#define MAX_Fs 99999 //-1 for infinitet 

int fCount = 0;

static int device_open(struct inode *i, struct file *f) 
{
	
	return 0;
}

static int device_close(struct inode *i, struct file *f)
{
	return 0;
}

static ssize_t device_read(
	struct file *f, char *buffer, size_t length, loff_t *offset)
{
	*buffer = 'F';
	fCount++;

	if (fCount != -1 && fCount >= MAX_Fs){
		panic("No more F's");
	}
	
 	return 1;
}

static ssize_t device_write(
	struct file *f, const char *buffer, size_t length, loff_t *offset)
{
	if (*buffer = 'F' || *buffer = 'f'){
		fCount--;
	}else{
		panic("My world only contains F!!! ")
	}	
	return length;
}

static struct file_operations fops = 
{
	.read = device_read,
	.write = device_write,
	.open = device_open,
	.release = device_close
};

static int major;

static int device_init(void) 
{
	major = register_chrdev(0, "null device", &fops);
	if (major < 0) 
	{
		printk("Init failed (%d)\n", major);
		return major;
	}
	printk("Got major %d\n", major);
	return 0;
}

static void device_exit(void) 
{
	int n = unregister_chrdev(major, "null device");
	if (n < 0) 
	{
		printk("Cleanup failed (%d)\n", n);
	}
}

module_init(device_init);
module_exit(device_exit);

MODULE_LICENSE("GPL");
diverse/fkernelmodul.1203278960.txt.gz · Sidst ændret: 16-09-2011 18:48 (ekstern redigering)
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0