From: danielhilst@gmail.com (Daniel Hilst Selli)
To: kernelnewbies@lists.kernelnewbies.org
Subject: Char device initialization
Date: Wed, 09 Nov 2011 15:59:17 -0200 [thread overview]
Message-ID: <4EBABF75.5060803@gmail.com> (raw)
In-Reply-To: <CALJfu6MGZ27uj4wkAUkQ4ZVTGzkVr7qG+cOTvim+LWzmNT2s5Q@mail.gmail.com>
On 11/09/2011 01:28 PM, rohan puri wrote:
>
>
> On Wed, Nov 9, 2011 at 7:22 PM, Alexandru Juncu <alex.juncu@rosedu.org
> <mailto:alex.juncu@rosedu.org>> wrote:
>
> On Wed, Nov 9, 2011 at 3:41 PM, Daniel Hilst Selli
> <danielhilst at gmail.com <mailto:danielhilst@gmail.com>> wrote:
> > I'm trying to create a example char device. The example compiles
> fine,
> > but when I try to "cat" I got "No such device or address". I have
> > reviewed the code thousend times and can't see what I'm missing
> >
> > Here is the code -> http://pastebin.com/Td03U0fK
> >
> > The read method is not good, I know, but is never called.
> >
> > I use my own running kenrel to test, I know that is danger. I'm
> building
> > a qemu enviroment to test this better.
> >
> > Here is uname -a:
> > Linux archlinux 3.0-ARCH #1 SMP PREEMPT Fri Oct 7 11:35:34 CEST 2011
> > x86_64 Intel(R) Core(TM) i3 CPU M 370 @ 2.40GHz GenuineIntel
> GNU/Linux
> >
> > Any idea?
> >
> > Thanks
>
> You tried to 'cat' a /dev/my_device file, right?
> Was that device file created with the mknod command?
>
> --
> Alexandru Juncu
>
> ROSEdu
> http://rosedu.org
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org <mailto:Kernelnewbies@kernelnewbies.org>
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
>
>
> Hello Daniel,
>
> I had the look at the code. The issue is with the cdev_add() call in
> init_gcdev() function.
>
> int cdev_add(struct cdev *p, dev_t dev, unsigned count) is the prototype
>
> Now the problem was *instead of passing second argument of type dev_t
> you were passing minor number macro.
>
> *Fix : - Do following additions : -
>
> 1. static int major; // Declare a global major no var.
>
> 2. In init_gcdev() after call to alloc_chrdev_region() get major no and
> store in major var.
>
> major = MAJOR(gcdev->dev);
>
> 3. Replace cdev_add() call like this : -
>
> cdev_add(&gcdev->cdev, MKDEV(major, FIRST_MINOR), 1);
>
> Now its running and your read methos is getting called.
>
> Hello Alexandru,
>
> That error was due to improper args passed to cdev_add(). If device file
> is not present (no mknod done) error would be "No such file or dir"
>
> Regards,
> Rohan Puri
Thanks Rohan, my fault!
prev parent reply other threads:[~2011-11-09 17:59 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-09 13:41 Char device initialization Daniel Hilst Selli
2011-11-09 13:52 ` Alexandru Juncu
2011-11-09 15:28 ` rohan puri
2011-11-09 17:59 ` Daniel Hilst Selli [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EBABF75.5060803@gmail.com \
--to=danielhilst@gmail.com \
--cc=kernelnewbies@lists.kernelnewbies.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.