chatgpt开发内核定时器模块的完整过程
2023-09-11 14:15:47 时间
描述任务需求后,几乎在同一时刻chatgpt给出响应,开始进入代码刷屏模式,coding过程中还不忘给代码添加注释。
要求它顺便将Makefile文件写好提供给我,刷完代码后,进跟着开始刷Makefie文件:
编译生成的代码时发现编译不过,原来是timer API从内核的某个版本开始变了,chatgpt默认生车给你的代码是用老API写的,而我的测试平台用的是linux5.4内核,API不匹配导致编译错误。于是我继续给它出难题,看chatgpt能否按照前面的思路为我纠正代码,于是我又问他:
他好象是想到了什么,首先是道歉,提供了不匹配的版本给我,然后马上输出纠正后的代码,仔细看,果然 init_timer函数调用改成了正确的timer_setup。
稍微改动一下(init_timer仍然在,注释掉即可,只改动一行,很不错了。),编译运行测试:
模块卸载也没有任何问题
下面看一下chatgput开发的定时器模块代码:
Makefile:
obj-m += mymodule.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
mymodule.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/kthread.h>
#include <linux/delay.h>
MODULE_LICENSE("GPL");
// 定义线程和定时器相关变量
static struct task_struct *thread;
static struct timer_list timer;
// 定义定时器处理函数
static void timer_handler(struct timer_list *timer)
{
printk(KERN_INFO "helloworld\n");
mod_timer(timer, jiffies + msecs_to_jiffies(1000)); // 重新启动定时器
}
// 定义内核线程函数
static int thread_func(void *data)
{
#if 0
init_timers(&timer); // 初始化定时器
timer.function = timer_handler;
timer.expires = jiffies + msecs_to_jiffies(1000);
add_timer(&timer); // 添加定时器到内核
#else
timer_setup(&timer, timer_handler, 0);
timer.expires = jiffies + msecs_to_jiffies(1000);
add_timer(&timer);
#endif
while (!kthread_should_stop()) {
schedule(); // 等待下一次定时器事件
}
del_timer(&timer); // 删除定时器
return 0;
}
static int __init mymodule_init(void)
{
printk(KERN_INFO "module loaded\n");
thread = kthread_run(thread_func, NULL, "mythread"); // 创建内核线程并启动
return 0;
}
static void __exit mymodule_exit(void)
{
printk(KERN_INFO "module unloaded\n");
kthread_stop(thread); // 停止内核线程
}
module_init(mymodule_init);
module_exit(mymodule_exit);
带着寻根究底的态度,后面又多问了一句关于timer_setup何时进入内核mainline,几秒中后,chatgpt给除了它的答案:
其他OS测试
关于RT-THREAD的用法,面对一个小众的国产OS,照样没有难倒chatgpt,给除了正确答案。可以大致猜测训练CHATGPT的语料库该何等丰富。
感受:
姑且不论是否能够取代人类程序员(个人认为是有可能的),如果chatgpt面向程序员开放,无疑将会大大提高工作效率。
结束
相关文章
- 科技云报道:“火到爆炸”的ChatGPT,为何当不了智能客服?
- ChatGPT生成Python学习路线思维导图,人人可编程的时代来了
- 【ChatGPT模板】教学辅助教案篇
- 使用 ChatGPT 从视频脚本创建知识图谱,使用 GPT-4 作为领域专家来帮助您从视频转录中提取知识(教程含完整源码)
- 本地构建自己的chatgpt已成为可能,国外团队从GPT3.5提取大规模数据完成本地机器人训练,并开源项目源码和模型支持普通在笔记上运行chatgpt
- 强化学习为 OpenAI 和 Microsoft 创建了有效的防御策略,拓宽了 ChatGPT 的护城河
- ChatGPT 的知识策略,构建低成本的认知助手
- ChatGPT和AI Art带来的变革,主导2023年的3个重要机器学习思想,理解这些概念可以让你在未来主宰人工智能
- 使用 AI 的 5 个商业创意和使用 ChatGPT 赚钱
- 如何在教育中使用 OpenAI 的 ChatGPT
- ChatGPT 和知识策略,构建低成本的认知助手
- 当ChatGPT遇见Python
- 使用ChatGPT写了一个Unity中截图当前场景并保存到本地的代码片
- 【chatgpt】教你如何创建一个Vue脚手架