linux-kernel - 没有调用探测函数?
问题描述
我想了解为什么不调用探测函数。
我需要研究什么来解决插入后自动检测到任何 USB 类型的问题?
我使用键盘,内核 5.6.3
这是我的代码:
#include <linux/module.h> /*included for all kernel modules*/
#include <linux/kernel.h> /*included for KERN_DEBUG*/
#include <linux/init.h> /*included for __init and __exit macros*/
#include <linux/usb.h>
#include <linux/usb/input.h>
#include <linux/hid.h>
#define MY_USB_VENDOR_ID 0x045e
#define MY_USB_PRODUCT_ID 0x0800
static struct usb_device_id my_usb_table[] = {
{ USB_DEVICE(MY_USB_VENDOR_ID, MY_USB_PRODUCT_ID) },
{},
};
MODULE_DEVICE_TABLE(usb, my_usb_table);
static int
my_pdrv_probe(struct usb_interface *pdev, const struct usb_device_id *id) {
pr_err("Hello\n");
return 0;
}
static void my_pdrv_remove(struct usb_interface *pdev) {
pr_err("Bye\n");
}
static struct usb_driver mypdrv = {
.name = "my first usb driver",
.probe = my_pdrv_probe,
.disconnect = my_pdrv_remove,
};
// module_usb_driver(mypdrv);
static int __init my_pdev_init(void)
{
pr_err("Hello Guy\n");
/* Refister with kernel */
usb_register(&mypdrv);
return 0;
}
static void __exit my_pdev_remove(void)
{
pr_err("Bye Guy\n");
/* Unregister from kernel */
usb_deregister(&mypdrv);
}
module_init(my_pdev_init);
module_exit(my_pdev_remove);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Sohaib Mohammed");
MODULE_DESCRIPTION("first usb driver module");
MODULE_VERSION("0.1");
解决方案
推荐阅读
- xamarin - Xamarin listview 按钮单击获取命令参数值
- javascript - 来自平面 json 的分层 json 数据
- java - 如何将 4 个畅销商品添加到 Amazon.com 的购物车中以获取耳机
- rust - 如何在 Tokio 的 Sink 中使用 Pin?
- sql - 我正在将 Oracle 查询转换为标准 Bigquery,出现错误“连接谓词中不支持 IN 子查询”。
- excel - 如何用非常简单的代码修复运行时错误 1004?
- javascript - 将数据从模型加载到折线图
- python - 在 jupyter notebook 中将 HTML 表单转换为 python 代码
- android - 如何使用 volley POST 解决 json 解析中的错误?
- angularjs - 如何使用 URL Rewrite 在 ASP.Net Core 上运行 AngularJs html5mode?