From: Greg KH <greg@kroah.com>
To: Stephen Glow <sglow@embeddedintelligence.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: How to generate hotplug events in drivers?
Date: Fri, 13 Aug 2004 10:23:58 -0700 [thread overview]
Message-ID: <20040813172358.GB1254@kroah.com> (raw)
In-Reply-To: <411CF5CD.9020207@embeddedintelligence.com>
On Fri, Aug 13, 2004 at 01:09:33PM -0400, Stephen Glow wrote:
> Thanks for the response, things seem to be working now.
Good.
> I'm still a little fuzzy about how all this works together, but the
> picture is starting to become a bit clearer. Here are the basic steps I
> took in my PCI driver to get the device node to show up, please let me
> know if anyone sees an error here:
>
> In the init module function, I create a new class_simple pointer:
>
> static struct class_simple *myclass;
>
> int init_module( void )
> {
> ~ ...
> ~ myclass = class_simple_create( THIS_MODULE, "myclassname" );
> ~ ...
> }
>
> This causes the new class directory to show up under /sys/class
>
> In the PCI probe function I do the following:
>
> probe(...)
> {
> ~ ...
>
> ~ // Allocate a device numer
> ~ dev_t mydev;
> ~ alloc_chrdev_region( &mydev, 0, 1, "mydevicename" );
>
> ~ // Add this device number to my class. Note I'm passing NULL for
> ~ // the device pointer. I'm not exactly sure what this is for, but
> ~ // most devices in the kernel tree seem to pass NULL here.
> ~ class_simple_add_device( myclass, mydev, NULL, "mydevicename" );
Pass in a pointer to the struct pci_dev ->dev structure. Something
like &pci_dev->dev should work well. Then you will see the "device"
symlink show up in your class device directory in sysfs, which makes
tools like udev much easier to use.
> ~ // Finally, I init and add my cdev structure.
> ~ cdev_init( &mycdev, &myfops );
> ~ mycdev.owner = THIS_MODULE;
Not needed, as it should be pulled from the fops structure.
> ~ kobject_set_name( &mycdev.kobj, "mydevicename" );
Not needed anymore.
> ~ cdev_add( &mycdev, mydev, 1 );
You might want to move the class_simple_add_device() line after the
cdev_add line, just to handle the error conditions easier.
Other than those minor things, this looks good.
thanks,
greg k-h
prev parent reply other threads:[~2004-08-13 17:24 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-08-13 1:52 Stephen Glow
2004-08-13 7:06 ` Greg KH
2004-08-13 17:09 ` Stephen Glow
2004-08-13 17:23 ` Greg KH [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=20040813172358.GB1254@kroah.com \
--to=greg@kroah.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sglow@embeddedintelligence.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®