kernelnewbies.kernelnewbies.org archive mirror
 help / color / mirror / Atom feed
* confused by char dev registration in a gpio driver
@ 2011-05-03 21:21 Robert P. J. Day
  2011-05-03 22:06 ` Greg KH
  2011-05-09 19:54 ` Jim Cromie
  0 siblings, 2 replies; 7+ messages in thread
From: Robert P. J. Day @ 2011-05-03 21:21 UTC (permalink / raw)
  To: kernelnewbies


  i'm sure i'm going to embarrass myself here but i was perusing the
char drivers for nice examples, and i ran across this excerpt in
pc8736x_gpio.c:

===== begin =====

        if (major) {
                devid = MKDEV(major, 0);
                rc = register_chrdev_region(devid, PC8736X_GPIO_CT, DEVNAME);
        } else {
                rc = alloc_chrdev_region(&devid, 0, PC8736X_GPIO_CT, DEVNAME);
                major = MAJOR(devid);
        }

        if (rc < 0) {
                dev_err(&pdev->dev, "register-chrdev failed: %d\n", rc);
                goto undo_request_region;
        }
        if (!major) {
                major = rc;
                dev_dbg(&pdev->dev, "got dynamic major %d\n", major);
        }

===== end =====

  i'm good with most of that -- if the (parameter) major is explicit,
then a dev_t of "devid" is created and register_chrdev_region() is
used.

  on the other hand, if major is zero, then alloc_chrdev_region() is
used for *dynamic* allocation of the major number.  in both cases, the
return code "rc" is saved and, if it's < 0, we have an error.  and
that's where the confusion comes in.

  i always thought both of those routines returned a simple zero to
indicate success.  but look at those last few lines -- that return
code is assigned to "major", at which point it's *that* value that's
printed.  wouldn't that just be zero all the time?

  and wouldn't it also print that this was a "dynamic" major even if
the user specified an explicit major number@load time?  this second
point is more nitpicky, but what about that first point?  wouldn't a
successful registration always print an allocated major number of
zero?

rday


-- 

========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-05-13 19:05 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-03 21:21 confused by char dev registration in a gpio driver Robert P. J. Day
2011-05-03 22:06 ` Greg KH
2011-05-10 17:26   ` Jim Cromie
2011-05-10 18:40     ` Greg KH
2011-05-13 17:05       ` Jim Cromie
2011-05-13 19:05         ` Greg KH
2011-05-09 19:54 ` Jim Cromie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).