system hangs upon the module loading

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I try to get register values of a NIC , using below module. But wen i
try to insmod the module, system hangs. I dont have any clue
what is happening, Could you please help me a little.


#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/vmalloc.h>
#include <asm/uaccess.h>
#include <net/net_namespace.h>
#include <linux/if_ether.h>
#include <linux/netfilter/xt_time.h>
#include <linux/string.h>

#include <linux/init.h>
#include <linux/netfilter.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/ethtool.h>



MODULE_LICENSE("GPL");

MODULE_DESCRIPTION("Fortune Cookie Kernel Module");

MODULE_AUTHOR("M. Tim Jones");


static struct proc_dir_entry *proc_entry;
static struct proc_dir_entry *proc_dir_entry;



int fortune_read(char *buffer, char **start, off_t off,
                          int count, int *eof, void *data)
{
	struct net_device *dev ;
        struct ethtool_regs reg;
	
	if (off > 0) {
		printk(KERN_INFO "we have finished to read ");
		return 0;	
	}


       dev=(struct net_device *)dev_get_by_name(&init_net, "eth0");

#if 1
        if(dev->ethtool_ops->get_regs) {
                dev->ethtool_ops->get_regs(dev, &reg, (void *)buffer);
         }
#endif
	
	return count;
}


int fortune_write(struct file *file, const char __user *buffer,
                           unsigned long count, void *data)
{
	return count;
}




int init_fortune_module( void )

{


   struct file *filp = filp_open("/proc/net", O_RDONLY, 0);

   proc_dir_entry = PDE(filp->f_dentry->d_inode);	
   proc_entry = create_proc_entry( "fortune", 0644, proc_dir_entry );

   if (proc_entry == NULL) {
    	printk(KERN_INFO "fortune: Couldn't create proc entry\n");

   } else {

 	proc_entry->read_proc = fortune_read;

      	proc_entry->write_proc = fortune_write;

      	printk(KERN_INFO "fortune: Module loaded.\n");

    }


    return 0;

}

void cleanup_fortune_module( void )
{


  remove_proc_entry("fortune", proc_dir_entry);
  printk(KERN_INFO "fortune: Module unloaded.\n");

}


module_init( init_fortune_module );
module_exit( cleanup_fortune_module );
--
To unsubscribe from this list: send the line "unsubscribe linux-modules" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux