This shows you the differences between two versions of the page.
so2:laboratoare:lab12 [2017/05/14 15:00] octavian.purdila update lxr links to use 4.9 |
so2:laboratoare:lab12 [2018/05/17 09:18] (current) elena.sandulescu [Structuri de bază în dispozitivele Linux] |
||
---|---|---|---|
Line 209: | Line 209: | ||
static int my_match (struct device *dev, struct device_driver *driver) | static int my_match (struct device *dev, struct device_driver *driver) | ||
{ | { | ||
- | return !strncmp (dev_name(dev), driver->name, strlen (driver->name)); | + | return strncmp (dev_name(dev), driver->name, strlen (driver->name)); |
} | } | ||
Line 808: | Line 808: | ||
</code> | </code> | ||
- | La detectarea unui dispozitiv în kernel (în procesul de boot sau la adăugarea dispozitivului prin ''hotplug''), se transmite o întrerupere în sistem care ajunge la magistrală. Dispozitivul este înregistrat cu ajutorul funcției [[http://lxr.free-electrons.com/source/drivers/base/core.c?v=3.11#L1209 | device_register]] și este atașat magistralei (și se va genera un apel în userspace, care poate fi detectat de ''udev''). Apoi se va parcurge lista de drivere a magistralei și se va apela funcția ''match'' pentru fiecare dintre ele. Funcția ''match'' încearcă să asocieze un driver cu un dispozitiv. După ce a fost determinat driverul asociat dispozitivului, se va apela funcția ''probe'' a driver-ului. Dacă funcția se termină cu succes, dispozitivul este adăugat în lista de dispozitive a driver-ului și se creează intrările corespunzătoare în ''sysfs'' bazate pe numele dispozitivului. | + | La detectarea unui dispozitiv în kernel (în procesul de boot sau la adăugarea dispozitivului prin ''hotplug''), se transmite o întrerupere în sistem care ajunge la magistrală. Dispozitivul este înregistrat cu ajutorul funcției [[https://elixir.bootlin.com/linux/v4.9/source/drivers/base/core.c#L1185 | device_register]] și este atașat magistralei (și se va genera un apel în userspace, care poate fi detectat de ''udev''). Apoi se va parcurge lista de drivere a magistralei și se va apela funcția ''match'' pentru fiecare dintre ele. Funcția ''match'' încearcă să asocieze un driver cu un dispozitiv. După ce a fost determinat driverul asociat dispozitivului, se va apela funcția ''probe'' a driver-ului. Dacă funcția se termină cu succes, dispozitivul este adăugat în lista de dispozitive a driver-ului și se creează intrările corespunzătoare în ''sysfs'' bazate pe numele dispozitivului. |
=== Eliminare dispozitiv === | === Eliminare dispozitiv === |