linux_driver_example
声明:资源链接索引至第三方,平台不作任何存储,仅提供信息检索服务,若有版权问题,请https://help.coders100.com提交工单反馈
Linux驱动示例代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define NAME "my_driver"
#define MODULE_LICENSE "GPL v3"
#define MODULE_AUTHOR "Your Name"
#define MODULE_VERSION "1.0.0"
static int __init my_driver_init(void)
{
printk(KERN_INFO "my_driver_init called\n");
return 0;
}
static void __exit my_driver_exit(void)
{
printk(KERN_INFO "my_driver_exit called\n");
}
static const struct module_attribute attrs[] = {
{ "my_driver", S_IRUGO, &my_driver_init, &my_driver_exit },
{ "my_driver-irq", SIOC_IRQ, &my_driver_irq, NULL }
};
static struct class my_driver_class = NULL;
static struct device my_driver_dev = NULL;
static int __init my_driver_init(void)
{
my_driver_class = class_create(THIS_MODULE, NAME);
if (my_driver_class == NULL) {
printk(KERN_ERR "Failed to create class s\n", NAME);
goto err_exit;
}
device_create(my_driver_class, MKDEV(my_driver_dev, 0), NULL, attrs);
if (IS_ERR(my_driver_dev)) {
printk(KERN_ERR "Failed to create device s\n", NAME);
goto err_exit;
}
return 0;
err_exit:
class_destroy(my_driver_class);
return -1;
}
static void __exit my_driver_exit(void)
{
device_destroy(my_driver_dev);
class_unref(my_driver_class);
class_destroy(my_driver_class);
}
static int __init my_driver_probe(struct platform_device pdev)
{
my_driver_class->name = pdev->name;
my_driver_class->id = pdev->id;
my_driver_class->dev = &my_driver_dev;
return 0;
}
static void __exit my_driver_remove(void)
{
device_destroy(my_driver_dev);
class_unref(my_driver_class);
}
static int __init my_driver_probe(struct platform_device pdev)
{
printk(KERN_INFO "my_driver probe called\n");
return 0;
}
static void __exit my_driver_remove(void)
{
printk(KERN_INFO "my_driver remove called\n");
}
module_param(my_driver, int, 0644);
MODULE_PARM_DESC(my_driver, "Driver name");
MODULE_LICENSE("GPL v3");
MODULE_AUTHOR("Your Name");
MODULE_VERSION("1.0.0");
module_create(my_driver, NULL, NULL, NULL);
module_dispatch(my_driver);
-
vTerminal
- 2025-05-24 23:21:57访问
- 积分:1
-
flutter_env
- 2025-05-24 23:15:26访问
- 积分:1
-
RetrieveWeComChatArchives
- 2025-05-24 23:08:21访问
- 积分:1
-
cad3d
- 2025-05-24 22:57:50访问
- 积分:1
-
三维建模
- 2025-05-24 22:57:07访问
- 积分:1
-
坐标正算 C
- 2025-05-24 22:49:57访问
- 积分:1
-
MATLAB-6轴机械臂仿真
- 2025-05-24 22:49:21访问
- 积分:1
-
tszdn.c
- 2025-05-24 22:44:52访问
- 积分:1
-
基于C的链表
- 2025-05-24 22:41:08访问
- 积分:1
-
02. 数据类型和变量
- 2025-05-24 22:29:28访问
- 积分:1
-
rt-thread
- 2025-05-24 22:24:12访问
- 积分:1
-
rt-thread
- 2025-05-24 22:23:41访问
- 积分:1
-
TWRP_CN
- 2025-05-24 22:14:51访问
- 积分:1
-
鸡哥的NEMU
- 2025-05-24 22:14:23访问
- 积分:1
-
skia_20241102
- 2025-05-24 22:08:11访问
- 积分:1
-
Linux-0.11
- 2025-05-24 22:07:43访问
- 积分:1
-
stm32-f407-zgt6-ov2640
- 2025-05-24 22:06:17访问
- 积分:1
-
rt-robot
- 2025-05-24 22:01:02访问
- 积分:1
-
ZYNQ 7010 下的 DMA 的 Linux设备驱动程序
- 2025-05-24 21:57:59访问
- 积分:1
-
位帧同步解调设备驱动烧写程序
- 2025-05-24 21:57:21访问
- 积分:1
-
perl5
- 2025-05-24 21:48:53访问
- 积分:1
访问申明(访问视为同意此申明)
2.部分网络用户分享TXT文件内容为网盘地址有可能会失效(此类多为视频教程,如发生失效情况【联系客服】自助退回)
3.请多看看评论和内容介绍大数据情况下资源并不能保证每一条都是完美的资源
4.是否访问均为用户自主行为,本站只提供搜索服务不提供技术支持,感谢您的支持