pci_register_driver std. linux function

Discussions on more advanced topics such as monolithic vs micro-kernels, transactional memory models, and paging vs segmentation should go here. Use this forum to expand and improve the wiki!
Post Reply
ggodw000
Member
Member
Posts: 396
Joined: Wed Nov 18, 2015 3:04 pm
Location: San Jose San Francisco Bay Area
Contact:

pci_register_driver std. linux function

Post by ggodw000 »

I am inspecting linux driver code.
During initialization triggered by module_init(<driver_name>), at some point in later stage, the pci_register_driver is called. This is a part of linux kernel module I found. The first parameter is a linux driver structure which also must be standard.
There are members initialized for pci driver, including usual stuff like pci dev, vendor id.
The one I am paying attention to is .probe member and it is assigned to a function called <driver_name_probe>.

From the dmesg log after driver built and loaded, I can see <driver_name_probe> output sometime after registration.
What I am not sure in this instance is whether <driver_name_probe> is called as a result of, or during pci_register_driver or some other scheduling mechanism later once it is registered?

Does anyone have better knowledge on this?
I am too lazy to look at what pci_register_device is doing but earlier I did, there is at least one call to kobject_uevent() during registration which may possible hold the key.

The usual struc for pci driver:

static struct pci_driver <driver_name>_driver = {
.name = <driver_name>_driver_name,
.id_table = <driver_name>_pci_tbl,
.probe = <driver_name>probe,
.remove = <driver_name>remove,
.shutdown = <driver_name>shutdown,
.err_handler = &<driver_name>_err_handler
};
key takeaway after spending yrs on sw industry: big issue small because everyone jumps on it and fixes it. small issue is big since everyone ignores and it causes catastrophy later. #devilisinthedetails
Octocontrabass
Member
Member
Posts: 5218
Joined: Mon Mar 25, 2013 7:01 pm

Re: pci_register_driver std. linux function

Post by Octocontrabass »

ggodw000 wrote:What I am not sure in this instance is whether <driver_name_probe> is called as a result of, or during pci_register_driver or some other scheduling mechanism later once it is registered?

I found this documentation that seems to explain it.
ggodw000
Member
Member
Posts: 396
Joined: Wed Nov 18, 2015 3:04 pm
Location: San Jose San Francisco Bay Area
Contact:

Re: pci_register_driver std. linux function

Post by ggodw000 »

yeah i looked at it.
key takeaway after spending yrs on sw industry: big issue small because everyone jumps on it and fixes it. small issue is big since everyone ignores and it causes catastrophy later. #devilisinthedetails
Post Reply