On Friday 10 September 2010 19:02:09 John Mahoney wrote: > On Fri, Sep 10, 2010 at 11:51 AM, fabio de francesco <fabio@xxxxxxxxxxx> wrote: > > Hi all, > > > > I have modified a simple character device driver as an exercise from the > > Cooperstein's Linux Device Drivers book. > > > > It seems to work fine except that when I "cat /dev/mycdrv" it provides > > garbage. > > > > This is a trimmed down version of the code: > > > > #include <linux/module.h> /* for modules */ > > #include <linux/fs.h> /* file_operations */ > > #include <linux/uaccess.h> /* copy_(to,from)_user */ > > #include <linux/init.h> /* module_init, module_exit */ > > #include <linux/slab.h> /* kmalloc */ > > #include <linux/cdev.h> /* cdev utilities */ > > > > #define MYDEV_NAME "mycdrv" > > #define KBUF_SIZE (size_t)( PAGE_SIZE ) > > > > static char *kbuf; > > static dev_t first; > > static unsigned int count = 1; > > static int my_major = 700, my_minor = 0; > > static struct cdev *my_cdev; > > static int counter = 0; > > > > static int mycdrv_open (struct inode *inode, struct file *file) > > { > > printk( KERN_INFO " open #%d\n", ++counter ); > > kbuf = kmalloc (KBUF_SIZE, GFP_KERNEL); > > memset( kbuf, '\0', KBUF_SIZE ); > > First this should be > memset( kbuf, '0', KBUF_SIZE ); Ok. Please, why can't I pad the buffer with null bytes? Why '0' (zero character) and not '\0' (null byte)? > > That will print the char 0 instead of the null char. > > Second try using "dd if=[dev] count=1" instead to read. I just want the device to be read any means the user prefers, i.e. with "cat". fabio > > -- > John -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ