Re: character device driver reading only last character of buffer

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

 



On Sun, Sep 26, 2010 at 12:17 AM, Bond <jamesbond.2k.g@xxxxxxxxx> wrote:


On Sun, Sep 26, 2010 at 12:30 PM, Venkatram Tummala <venkatram867@xxxxxxxxx> wrote:

Do a cat /proc/devices|grep <DEVICENAME>. This will get you the number.
I am getting two numbers here
bond@bond:~/programming/venkatrama$ cat /proc/devices | grep bond
 60 bond
250 bond
 which one should I use.

One of them is a left over from your previous mknod. Reboot the system. Then, do a mknod. You will only see one.

Then do "mknod /dev/bond" c <NUMBER in /proc/devices> 0 . 
 
>zero in register_chrdev(..) is not the device number. It indicates a dynamic number.
http://www.fsl.cs.sunysb.edu/kernel-api/re941.html
how is major number then assigned.
How is the name of device then decided
excerpts from the above link say
"The name of this device has nothing to do with the name of the device in /dev. It only helps to keep track of the different owners of devices. If your module name has only one type of devices it's ok to use e.g. the name of the module here."

how do I make sure that if I am writing to device /dev/bond then bond module is being used
My advise is to have printk in your module and see if your code is getting called on a read or write.


in your code you have done  in memory_read
  *f_pos = *f_pos + count;

why have you done this?
What purpose it serves?

It updates the file pointer.

Your program has worked I used 60 in mknod out of two outputs which came in cat /proc/device | grep bond



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux