当前位置: 首页 > news >正文

三角网站建设织梦做不了视频网站

三角网站建设,织梦做不了视频网站,高端品牌网站建设兴田德润在哪儿,户外旅游网站模板参考博客文章: 向linux内核提交代码 - 知乎 一、下载Linux内核源码 通过git下载Linux内核源码,具体命令如下: git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 实际命令及结果如下: penghaoDin…

参考博客文章:

向linux内核提交代码 - 知乎

一、下载Linux内核源码

通过git下载Linux内核源码,具体命令如下:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

实际命令及结果如下:

penghao@Ding-Perlis-MP26JBT0:~/kernel_commit$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
正克隆到 'linux'...
remote: Enumerating objects: 9727840, done.
remote: Counting objects: 100% (249/249), done.
remote: Compressing objects: 100% (125/125), done.
接收对象中: 100% (9727840/9727840), 2.65 GiB | 126.00 KiB/s, 完成.
remote: Total 9727840 (delta 166), reused 146 (delta 124), pack-reused 9727591
处理 delta 中: 100% (7980690/7980690), 完成.
正在更新文件: 100% (81766/81766), 完成.

注: 整个过程耗时非常长,笔者是经过了大约一晚上的时间,头天下班前开始下载,第二天一上班已下载完(具体是什么时候下载完成的不确定,但至少得需要4—6小时)。

二、修改要存在问题的代码

针对于你所发现的Linux内核代码所存在的不足,进行相应的修改。

实例:

本次修改的代码位于Linux Kernel源码根目录的drivers/gpu/drm/drm_framebuffer.c中,在framebuffer_check函数中。

原来的代码片段如下:

static int framebuffer_check(struct drm_device *dev,const struct drm_mode_fb_cmd2 *r)
{const struct drm_format_info *info;int i;……/* now let the driver pick its own format info */info = drm_get_format_info(dev, r);for (i = 0; i < info->num_planes; i++) {unsigned int width = fb_plane_width(r->width, info, i);unsigned int height = fb_plane_height(r->height, info, i);unsigned int block_size = info->char_per_block[i];……}……return 0;
}

经过修改后的代码如下:

static int framebuffer_check(struct drm_device *dev,const struct drm_mode_fb_cmd2 *r)
{const struct drm_format_info *info;int i;……、/* now let the driver pick its own format info */info = drm_get_format_info(dev, r);if (!info) {drm_dbg_kms(dev, "no matched format info\n");return -EFAULT;}for (i = 0; i < info->num_planes; i++) {unsigned int width = fb_plane_width(r->width, info, i);unsigned int height = fb_plane_height(r->height, info, i);unsigned int block_size = info->char_per_block[i];……}…… return 0;
}

可以看到,是加入了对于info为空的判断,增强了代码的健壮性。

三、查看修改是否正确

完成上述修改并保存后,使用git diff命令查看所修改的内容是否符合预期。

实际命令及结果如下:

penghao@Ding-Perlis-MP26JBT0:~/kernel_commit/linux/drivers/gpu/drm$ git diff
diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c
index aff3746dedfb..be7dd1998c04 100644
--- a/drivers/gpu/drm/drm_framebuffer.c
+++ b/drivers/gpu/drm/drm_framebuffer.c
@@ -194,6 +194,10 @@ static int framebuffer_check(struct drm_device *dev,/* now let the driver pick its own format info */info = drm_get_format_info(dev, r);
+       if (!info) {
+               drm_dbg_kms(dev, "no matched format info\n");
+               return -EFAULT;
+       }for (i = 0; i < info->num_planes; i++) {unsigned int width = fb_plane_width(r->width, info, i);

四、添加到本地Git仓库

使用git add命令将修改添加到本地Git仓库。

实际命令及结果如下:

penghao@Ding-Perlis-MP26JBT0:~/kernel_commit/linux$ git add drivers/gpu/drm/drm_framebuffer.c 
penghao@Ding-Perlis-MP26JBT0:~/kernel_commit/linux$

五、将暂存区里的改动给提交到本地的版本库

使用git commit命令将暂存区里的改动给提交到本地的版本库,同时输入详细提交信息。

实际过程及结果如下:

(1)运行git commit -s命令

penghao@Ding-Perlis-MP26JBT0:~/kernel_commit/linux$ git commit -s

(2)输入提交信息

一定要写好commit log!commit log的一般格式是:

<标题>
<空行> 
<详细描述>

标题一般的格式是:

修改的大类:patch的主要描述(尽量简短)如:
platform/x86/samsung-laptop: Add support for Samsung's NP7[34]0U3E models

注意:
标题下面一定要有一个空行!标题下面一定要有一个空行!标题下面一定要有一个空行!

本次实例如下:

Add judgement for return value ofdrm_get_format_info().Since drm_get_format_info() may return NULL, so a judgement of return
value is needed to add.Signed-off-by: Peng Hao <penghao@dingdao.com>

六、生成patch

都确认无误后,生成patch。使用git format-patch命令将修改添加到本地Git仓库。

实际命令及结果如下:

penghao@Ding-Perlis-MP26JBT0:~/kernel_commit/linux$ git format-patch -1
0001-gpu-drm-drm_framebuffer.c-Add-judgement-for-return-v.patch
penghao@Ding-Perlis-MP26JBT0:~/kernel_commit/linux$ cat 0001-gpu-drm-drm_framebuffer.c-Add-judgement-for-return-v.patch 
From 6f04db02f2fbb5851797ee5a63bb53483ea4fdb4 Mon Sep 17 00:00:00 2001
From: Peng Hao <penghao@dingdao.com>
Date: Thu, 26 Oct 2023 10:45:54 +0800
Subject: [PATCH] gpu/drm/drm_framebuffer.c: Add judgement for return value ofdrm_get_format_info().Since drm_get_format_info() may return NULL, so a judgement of return
value is needed to add.Signed-off-by: Peng Hao <penghao@dingdao.com>
---drivers/gpu/drm/drm_framebuffer.c | 4 ++++1 file changed, 4 insertions(+)diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c
index aff3746dedfb..be7dd1998c04 100644
--- a/drivers/gpu/drm/drm_framebuffer.c
+++ b/drivers/gpu/drm/drm_framebuffer.c
@@ -194,6 +194,10 @@ static int framebuffer_check(struct drm_device *dev,/* now let the driver pick its own format info */info = drm_get_format_info(dev, r);
+       if (!info) {
+               drm_dbg_kms(dev, "no matched format info\n");
+               return -EFAULT;
+       }for (i = 0; i < info->num_planes; i++) {unsigned int width = fb_plane_width(r->width, info, i);
-- 
2.37.1

七、获取相应模块的内核代码维护者列表

生成补丁文件之后,就可以通过邮件工具来发送补丁的内容了。
由于linux整个内核十分庞大,所以内核的维护也是由很多人负责。我们需要将补丁发送给该模块、该文件的维护者。
使用命令 ./scripts/get_maintainer.pl xxx得到所修改文件的维护者的邮箱列表。实际命令及结果如下:

penghao@Ding-Perlis-MP26JBT0:~/kernel_commit/linux$ ./scripts/get_maintainer.pl drivers/gpu/drm/drm_framebuffer.c 
Maarten Lankhorst <maarten.lankhorst@linux.intel.com> (maintainer:DRM DRIVERS AND MISC GPU PATCHES)
Maxime Ripard <mripard@kernel.org> (maintainer:DRM DRIVERS AND MISC GPU PATCHES)
Thomas Zimmermann <tzimmermann@suse.de> (maintainer:DRM DRIVERS AND MISC GPU PATCHES)
David Airlie <airlied@gmail.com> (maintainer:DRM DRIVERS)
Daniel Vetter <daniel@ffwll.ch> (maintainer:DRM DRIVERS)
dri-devel@lists.freedesktop.org (open list:DRM DRIVERS)
linux-kernel@vger.kernel.org (open list)

八、配置.gitconfig文件

在执行git send-email之前,需要配置好git配置文件。
git配置文件路径是 ~/.gitconfig , 打开并编辑该文件,原始内容如下:

[user]email = penghao@dingdao.comname = Peng Hao
[safe]……

向其中添加以下内容:

[sendemail]smtpEncryption = sslsmtpServer = smtp.feishu.cnsmtpServerPort = 465smtpUser = penghao@dingdao.comsmtpPass = jeplgdBxk3MqLcib

以上信息是从哪里来的?
由于我们的邮箱用的是飞书,因此是在飞书中获得的设置。如下图所示:

信息就是从这里得到的。只是密码每次会有所不同,需要每次修改.gitconfig文件(是不是每次必须换需要进一步尝试)。

[sendemail]smtpEncryption = sslsmtpServer = smtp.feishu.cnsmtpServerPort = 465smtpUser = penghao@dingdao.comsmtpPass = jeplgdBxk3MqLcib

九、发送邮件

完成了邮箱的SMTP服务配置之后,就可以发送邮件了。 使用git send-email发送邮件,实际命令及结果如下:

penghao@Ding-Perlis-MP26JBT0:~/kernel_commit/linux$ git send-email --to maarten.lankhorst@linux.intel.com,mripard@kernel.org,tzimmermann@suse.de,airlied@gmail.com,daniel@ffwll.ch --cc dri-devel@lists.freedesktop.org,linux-kernel@vger.kernel.org,penghao@dingdao.com 0001-gpu-drm-drm_framebuffer.c-Add-judgement-for-return-v.patch
0001-gpu-drm-drm_framebuffer.c-Add-judgement-for-return-v.patch
(mbox) Adding cc: Peng Hao <penghao@dingdao.com> from line 'From: Peng Hao <penghao@dingdao.com>'
(body) Adding cc: Peng Hao <penghao@dingdao.com> from line 'Signed-off-by: Peng Hao <penghao@dingdao.com>'From: Peng Hao <penghao@dingdao.com>
To: maarten.lankhorst@linux.intel.com,mripard@kernel.org,tzimmermann@suse.de,airlied@gmail.com,daniel@ffwll.ch
Cc: dri-devel@lists.freedesktop.org,linux-kernel@vger.kernel.org,penghao@dingdao.com
Subject: [PATCH] gpu/drm/drm_framebuffer.c: Add judgement for return value of drm_get_format_info().
Date: Thu, 26 Oct 2023 12:34:42 +0800
Message-Id: <20231026043442.3170975-1-penghao@dingdao.com>
X-Mailer: git-send-email 2.37.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bitThe Cc list above has been expanded by additionaladdresses found in the patch commit message. By defaultsend-email prompts before sending whenever this occurs.This behavior is controlled by the sendemail.confirmconfiguration setting.For additional information, run 'git send-email --help'.To retain the current behavior, but squelch this message,run 'git config --global sendemail.confirm auto'.Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): yes

注意:此过程可能会出现问题。具体问题及解决方法请参考以下笔者博文

注: 建议先通过git send-email --to <自己的邮箱>,看看自己能不能收到,收到后打开邮件是什么样子。确认无误再发给上游邮件列表。

十、提交后的后续工作

邮件发送后就是等待别人的review了,可能会有review的人给你回复邮件,你只要正常的邮件沟通就可以。如果可能会指出你的问题,可能会NACK掉你的patch或者让你重新修改后重新发送patch。

http://www.yayakq.cn/news/196497/

相关文章:

  • 郑州新感觉会所网站哪里做的网络营销推广专家
  • 织梦网站访问量统计代码王也平
  • 长春移动网站建设南昌网站搭建
  • 微信上怎么做网站粘合剂东莞网站建设
  • 建设招标项目常挂网站有哪些No酒店网站建设
  • 个人网站需不需要备案windows 优化大师
  • 免费申请注册网站wordpress浏览量插件
  • 网站开发实例视频创网络
  • 辅助色网站站长之家seo工具
  • 生鲜电商网站建设与管理小程序网站建设
  • 微网站页面菜单栏西宁市建设网站企业
  • 温州专业网站制作设计网站建设规划需要考虑
  • 如何建立一个手机网站杭州p2p网站建设
  • 工商局网站查询入口网站建设分前端和后台吗
  • 个人网站设计规划网上定制西装
  • 做搜索引擎网站辽宁省建设工程信息网官网新网站入口官方
  • 做网站商城怎么样wordpress 正在例行维护
  • 网站添加文字大小南京seo招聘
  • 毕业设计网站选题借钱软件推广微信hyhyk1
  • 网站增加外链的方法有哪些手机网站内容管理系统
  • 外贸网站建设方案深圳网站建设及推广服务公司
  • 网站开发个性化wordpress主题c7v5 v2.0
  • 做足球原创短视频网站石家庄网站制作软件
  • 直播秀场网站开发南昌网站建设 南昌做网站公司
  • 网站虚拟主机空间1g多吗几大门户网站
  • 建设部网站房地产资质上海帝程网站建设公司
  • 青岛英文建站公司不能搜的超级恶心的关键词
  • 网站建设欧美风格网站建设中 怎么办
  • 怎样建立自己的个人网站泰安达创信息科技有限公司
  • 学校网站建设合同ui设计优秀案例