rendered paste bodystatic int arm_init(void)
{
char* name = "arm";
// Let us know we are up
printk(KERN_ALERT "arm: Hello arm.\n");
// Get a device number
if(alloc_chrdev_region(&arm.dev, 0, COUNT, name) < 0)
{
printk(KERN_ALERT "arm: ERROR: alloc_chrdev FAILED.\n");
return 0;
}
printk(KERN_ALERT "arm: Device number = %d.\n", MAJOR(arm.dev));
// Register Char device
cdev_init(&arm.cdev, &arm_fops);
arm.cdev.owner = THIS_MODULE;
arm.cdev.ops = &arm_fops;
if(cdev_add(&arm.cdev, MAJOR(arm.dev), 2) < 0)
{
printk(KERN_ALERT "arm: ERROR: cdev_add FAILED.\n");
// Cleanup
unregister_chrdev_region(arm.dev, COUNT);
return 0;
}
// Init ARM struct
atomic_set(&arm.inUse, -1);
// Create Proc Entry
arm.pde = create_proc_read_entry("arm", 0, NULL, arm_proc_read, NULL);
return 0;
}