rendered paste body#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/module.h>
#include <linux/config.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <asm/semaphore.h>
#include <unistd.h>
#include "vhd.h"
void interrupt_me_up(struct vhd_block*);
int init(void)
{
struct vhd_block writemeup, readmeup;
int init, i;
char data[] = "some crap\n";
writemeup.block_number = 0;
writemeup.operation = VHD_WRITE;
//writemeup.data = data;
//memset(writemeup.data, 100, 0);
//strncpy(writemeup.data, data, sizeof(data));
printk("Hello!!\n");
init = vhd_init();
if(init != 0) {
printk("cant init captain\n");
return 1;
}
vhd_register_interrupt(interrupt_me_up);
vhd_request_operation(&writemeup);
for(i = 0; i< 1000000; i++);
readmeup.block_number = 0;
readmeup.operation = VHD_READ;
vhd_request_operation(&readmeup);
return 0;
}
void cleanup(void)
{
vhd_cleanup();
printk("Ciao!\n");
}
void interrupt_me_up(struct vhd_block* blocks_of_fun) {
printk("interrupted, baby\n");
printk("%i\n", blocks_of_fun->operation);
if(blocks_of_fun->operation == VHD_WRITE) {
printk("Written!\n");
} else if (blocks_of_fun->operation == VHD_READ) {
printk("Were reading!\n");
printk("And the data was.... %s\n", blocks_of_fun->data);
}
}
module_init(init);
module_exit(cleanup);
MODULE_LICENSE("GPL");