chatgpt开发内核定时器模块的完整过程

news/2024/11/26 7:20:34/

描述任务需求后,几乎在同一时刻chatgpt给出响应,开始进入代码刷屏模式,coding过程中还不忘给代码添加注释。

 要求它顺便将Makefile文件写好提供给我,刷完代码后,进跟着开始刷Makefie文件:

 编译生成的代码时发现编译不过,原来是timer API从内核的某个版本开始变了,chatgpt默认生车给你的代码是用老API写的,而我的测试平台用的是linux5.4内核,API不匹配导致编译错误。于是我继续给它出难题,看chatgpt能否按照前面的思路为我纠正代码,于是我又问他:

他好象是想到了什么,首先是道歉,提供了不匹配的版本给我,然后马上输出纠正后的代码,仔细看,果然 init_timer函数调用改成了正确的timer_setup。

稍微改动一下(init_timer仍然在,注释掉即可,只改动一行,很不错了。),编译运行测试:

模块卸载也没有任何问题

下面看一下chatgput开发的定时器模块代码:

Makefile:

obj-m += mymodule.oKDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)default:$(MAKE) -C $(KDIR) M=$(PWD) modulesclean:$(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 0init_timers(&timer);  // 初始化定时器timer.function = timer_handler;timer.expires = jiffies + msecs_to_jiffies(1000);add_timer(&timer);  // 添加定时器到内核
#elsetimer_setup(&timer, timer_handler, 0);timer.expires = jiffies + msecs_to_jiffies(1000);add_timer(&timer);
#endifwhile (!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的语料库该何等丰富。

CHAT GPT后的大模型训练架构

感受:

姑且不论是否能够取代人类程序员(个人认为是有可能的),如果chatgpt面向程序员开放,无疑将会大大提高工作效率。

结束


http://www.ppmy.cn/news/957764.html

相关文章

ChatGPT实现leetcode 刷题和变型

leetcode 刷题和变型 作为一个程序员&#xff0c;Leetcode 是一个非常重要的网站。它不仅可以帮助程序员提高算法和数据结构的能力&#xff0c;还能帮助我们准备技术面试。但是&#xff0c;刷 Leetcode 也需要花费大量的时间和精力来解决各种难题。那么&#xff0c;有没有什么…

leetcode:704. 二分查找(python3解法)

难度&#xff1a;简单 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9…

Idea的神级辅助插件-Bito-ChatGPT

最近被一款Idea的辅助神器协助Coding&#xff0c;让我都开始害怕我的程序员的活会不会就这样被替代了。现在给大家介绍这款神器Bito-ChatGPT&#xff0c;它能让开发人员轻松编写代码、理解语法、编写测试用例、解释代码、注释代码、检查安全性&#xff0c;甚至解释高级概念。 1…

介绍一款idea神级插件【Bito-ChatGPT】而且免费!

什么是Bito&#xff1f; Bito是一款在IntelliJ IDEA编辑器中的插件&#xff0c;Bito插件是由ChatGPT团队开发的&#xff0c;它是ChatGPT团队为了提高开发效率而开发的一款工具。ChatGPT团队是一支专注于自然语言处理技术的团队&#xff0c;他们开发了一款基于GPT的自然语言处理…

IDEA集成chatGTP让你编码如虎添翼

如果您 还没有chatGTP账号,请移步以下文章中注册章节: ​​​​​​独立部署基于apiKey或accessToken的GPT聊天工具_云台095的博客-CSDN博客 IDEA集成chatGTP让你编码如虎添翼 第一步,打开您的IDEA, 打开首选项(Preference) -> 插件(Plugin) 在插件市场搜索 c…

Java的Idea怎么用ChatGpt,让些代码变丝滑?

发现两款idea的AI插件神器&#xff0c;和一个AI编辑器 1、tabnine https://zhuanlan.zhihu.com/p/343938113 当提示代码出现后&#xff0c;其中 按tab键就可以通用提示出的代码了&#xff0c;alt[ 是换提示代码&#xff0c;试用期限为14天。&#xff08;注意标红的&#xff0…

CHAT GPT在Intellij IDEA中怎么配置

求助&#xff1a;CHAT GPT在Intellij IDEA中怎么配置 我使用的是最新版Intellij IDEA 2023.1&#xff0c;我在openai官网申请了CHATGPT密钥并填入IDEA中&#xff0c;但是为什么不能在IDEA中使用CHATGPT。 CHATGPT显示Something went wrong. Please try again later. 我可以正常…

IntelliJ IDEA 2023.1 最新变化 【附带ChatGPT教程】

ChatGPT开源公众号&#xff1a;https://gitee.com/wy521a/astar-weixin-mp最新变化 2023.1主要更新用户体验编辑器JavaScala分析器版本控制系统构建工具运行/调试框架和技术DockerKubernetes远程开发和协作Web 开发其他 在浏览器中打开 IntelliJ IDEA 2023.1 最新变化 主要更…