with the following code for registration of a character device,when i run a user prog on corresponding device file to open and read the file the read function is not executing. I checked with the help of dmesg. int scullv_init(void) { int result, i,err; dev_t dev; if((result = alloc_chrdev_region(&dev, 0, 1, "scullv"))) printk("Couldnt find a major number"); scullv_major = MAJOR(dev); scullv_minor = MINOR(dev); scullv_device = kmalloc(sizeof (struct scullv_dev), GFP_KERNEL); if (!scullv_device) { result = -ENOMEM; goto fail_malloc; } memset(scullv_device, 0, sizeof (struct scullv_dev)); cdev_init(&scullv_device->cdev, &scullv_fops); scullv_device->cdev.owner = THIS_MODULE; scullv_device->cdev.ops = &scullv_fops; err = cdev_add (&scullv_device->cdev, dev, 1); /* Fail gracefully if need be */ if (err) printk(KERN_NOTICE "Error %d adding scull", err); return 0; /* succeed */ fail_malloc: unregister_chrdev_region(dev, 1); return result; } int scullv_open (struct inode *inode, struct file *filp) { printk("Hi open called"); return 0; } ssize_t scullv_read (struct file *filp, const char __user *buf, size_t count, loff_t *f_pos) { printk("Hi read called"); return 0; } the user level code is int main() { int fd; if(fd=open("/dev/kanishk",O_RDWR)<=0) { printf("Error in opening file\n"); } printf("Hi open done\n"); char *buff=(char *) malloc(10); while(1); printf("Data Returned is :%d",read(fd,buff,5)); buff[6]='\0'; printf("Data Entered is :%s",buff); return 0; } thanks in advance __________________________________________ Yahoo! DSL ? Something to write home about. Just $16.99/mo. or less. dsl.yahoo.com -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/