Debian 10
Всем привет! Друзья подскажите почему printk не выводит в dmesg?
Вариант 1: что то с настройками системы.
Вариант 2: не вызываеться myPciDriverProbe из init функции, что уже хуже и более вероятно. Тогда от сюда следующий вопрос - почему myPciDriverProbe не вызывается, ведь pci_get_device находит устройсво?
pci_register_driver возвращает 0
Заранее спасибо.
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/pci.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Drakonof");
MODULE_DESCRIPTION("PCI");
MODULE_VERSION("0.1");
#define VENDOR 0x8086
#define ID 0x0150
static struct pci_device_id pciId[] = {
{ PCI_DEVICE(0x8086, 0x0150), },
{ 0, }
};
MODULE_DEVICE_TABLE(pci, pciId);
static int myPciDriverProbe(struct pci_dev *pDev, const struct pci_device_id *id);
static void myPciDriverRemove(struct pci_dev *pDev);
static struct pci_driver myDriver = {
.name = "my pci driver",
.id_table = pciId,
.probe = myPciDriverProbe,
.remove = myPciDriverRemove
};
static int __init myPciDriverInit(void)
{
struct pci_dev *pDev = NULL;
printk(KERN_NOTICE "Init PCI start\n" );
if((pDev = pci_get_device(VENDOR,ID, pDev)) != NULL)
{
printk(KERN_NOTICE "V:%X D:%X finded\n",pDev->vendor,pDev->device);
}
else
{
printk(KERN_NOTICE "PCI device not finded\n");
return -1;
}
printk(KERN_NOTICE "Init PCI stop\n" );
return pci_register_driver(&myDriver);
}
static void __exit myPciDriverExit(void)
{
pci_unregister_driver(&myDriver);
}
static int myPciDriverProbe(struct pci_dev *pDev, const struct pci_device_id *id)
{
u16 vendor, id;
pci_read_config_word(pDev, PCI_VENDOR_ID, &vendor);
pci_read_config_word(pDev, PCI_DEVICE_ID, &id);
printk(KERN_ERR "Device vid: 0x%X pid: 0x%X\n", vendor, id);
return 0;
}
static void myPciDriverRemove(struct pci_dev *pDev)
{
pci_release_region(pDev, pci_select_bars(pDev, IORESOURCE_MEM));
pci_disable_device(pDev);
}
module_init(myPciDriverInit);
module_exit(myPciDriverExit);