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

上海软件网站建设seo每日一帖

上海软件网站建设,seo每日一帖,上市网络公司排名,wordpress 大小文章目录 开源操作系统流程手记smatch能发现的典型问题常见的修复方案附:偶然发现,unlikely函数搞开源贡献的一些捷径 开源操作系统 看了zhihu上的一些科普,明白二次开发是常见现象,套壳、抄袭、自研都不是很科学的说法。中外大厂…

文章目录

  • 开源操作系统
  • 流程手记
  • smatch能发现的典型问题
  • 常见的修复方案
  • 附:偶然发现,unlikely函数
  • 搞开源贡献的一些捷径

开源操作系统

看了zhihu上的一些科普,明白二次开发是常见现象,套壳、抄袭、自研都不是很科学的说法。中外大厂都会在AOSP、linux kernel、ffmpeg播放器、chromium等常见的祖先上进行自己的定制,发布自己的发行版。

龙蜥操作系统,来自阿里云,设计目的之一是接管centos留下的烂摊子,用于服务器。
deepin,桌面操作系统。
openharmony和harmonyOS是不同的,类似AOSP与android的关系(剥离开源版和自留版的区别)。

流程手记

首先是smatch。常见的错误如missing unwind goto。此处应该赶紧看一下其它人的报错。

最主要的收获是,失败处理的最佳实践(ABC顺序申请,应CBA顺序释放)。kernel中大量使用这种goto fail label的写法。
trigger_init
buffer_setup
hw_init
hw_stop
buffer_cleanup
trigger_remove

maillist使用、内外审流程相关能大大增加可信度。
内审是学院的Google Group,还邀请了Dan Carpenter;外审直接是maintainer团队了。
maillist,可以认为是不依赖特定软件的群聊。可以用git send email功能,结合获取maintainer功能,快速拉群。
patch生成时会自动拉取commit message里的内容,发送邮件时会使用patch标题。
编译时可以通过调整编译选项,局部编译、多线程编译,大大提高速度。只要确保修改的地方被编译即可。

总结一下流程:
扫描-确认问题是否存在-确认问题修复方案-确认可以编译-写commit message-生成patch-用checkpatch检查patch格式-获取maintainer-发送邮件,如此循环。

smatch能发现的典型问题

Missing unwind goto。kernel中大量使用goto fail label的写法。正确使用goto,可以保证遇到错误之后能妥善处理。以我遇到的问题为例,错误处理代码的资源释放顺序并未对应资源申请顺序。

variable dereferenced before check。在解引用之前应确保值存在。否则内存保护机制会导致程序中断,比如segmentation fault。

dereferencing freed memory。可能导致数据破坏、代码执行。

Dead code。有些分支永远不会到达。比如(npages > (~0)) => (0-u32max > u32max)。

missing error code。以下背景知识经常用到,内核空间最高地址0xffffffff,那么最后一个page就是指的0xfffff000~0xffffffff(假设4k一个page)。这段地址是被保留的linux的错误号,例如最常见的几个 -EBUSY,-EINVAL,-ENODEV,-EPIPE,-EAGAIN,-ENOMEM 之类,其值都位于这个空间。任何一个指针,必然有三种情况,一种是有效指针,一种是NULL,空指针,一种是错误指针。通常的写法是先用IS_ERR()来判断是否是错误,然后如果是,那么就调用PTR_ERR()来返回这个错误代码。如果忘记调用后者,就会报这个错。

常见的修复方案

比较简洁的修复方案,是使用新api,比如Use devm_of_iomap() instead of of_iomap() to automatically handle the unused ioremap region,用devm_kzalloc()代替kzalloc()。这样就无需在函数中考虑失败后的资源释放。

附:偶然发现,unlikely函数

内核中常见unlikely函数(比如判断是否成功,一般都会成功)。

if(unlikely(a))和if(likely(a))的执行等价于if(a)是 一样的,区别在于unlikely和likely函数的加入会优化编译,加likely的意思是value的值为true的可能性更大一些,编译时会将if里的代码编译到紧跟likely判断后面;而unlikely表示value的值为fale的可能性更大一些,编译时会将else下面的代码指令编译到紧跟unlikely判断之后。这样做目的可以提高CPU指令判断效率,减少指令跳转而降低性能。

搞开源贡献的一些捷径

一是用现成工具去扫描。比如JavaFuzzer for java,GFuzz for go,codeQL/cppcheck for c/c++,pyt for python,snyk for 供应链。
二是从上游搬到下游,比如把openJDK搬到bishengJDK。


文章转载自:
http://dinncosinlessly.wbqt.cn
http://dinncorefurnish.wbqt.cn
http://dinncofoothot.wbqt.cn
http://dinncopinchfist.wbqt.cn
http://dinnconether.wbqt.cn
http://dinncorebatement.wbqt.cn
http://dinncosyncretise.wbqt.cn
http://dinncokhaki.wbqt.cn
http://dinncopander.wbqt.cn
http://dinncoraceball.wbqt.cn
http://dinncoimpropriator.wbqt.cn
http://dinncostrategos.wbqt.cn
http://dinncoquarrion.wbqt.cn
http://dinncobonesetting.wbqt.cn
http://dinncoscuttle.wbqt.cn
http://dinncowashaway.wbqt.cn
http://dinncounreckonable.wbqt.cn
http://dinncosneezy.wbqt.cn
http://dinncoveteran.wbqt.cn
http://dinncoquerulously.wbqt.cn
http://dinncomasscult.wbqt.cn
http://dinncopenlight.wbqt.cn
http://dinncoexordium.wbqt.cn
http://dinncofilipinize.wbqt.cn
http://dinncoluminary.wbqt.cn
http://dinncospry.wbqt.cn
http://dinncohundredweight.wbqt.cn
http://dinncobehar.wbqt.cn
http://dinncotackey.wbqt.cn
http://dinncomicrosome.wbqt.cn
http://dinncocovering.wbqt.cn
http://dinncounivalvular.wbqt.cn
http://dinncofew.wbqt.cn
http://dinncofishiness.wbqt.cn
http://dinnconitrotrichloromethane.wbqt.cn
http://dinncothrombus.wbqt.cn
http://dinncoglory.wbqt.cn
http://dinncosubtorrid.wbqt.cn
http://dinncocozen.wbqt.cn
http://dinncoungalled.wbqt.cn
http://dinncounbelonging.wbqt.cn
http://dinncohyperglycemia.wbqt.cn
http://dinncolimberly.wbqt.cn
http://dinncoflush.wbqt.cn
http://dinncodw.wbqt.cn
http://dinncohistoplasmosis.wbqt.cn
http://dinncoslavophil.wbqt.cn
http://dinncoinjury.wbqt.cn
http://dinncoabdomen.wbqt.cn
http://dinncocompossible.wbqt.cn
http://dinncolucretia.wbqt.cn
http://dinncounmugged.wbqt.cn
http://dinncoounce.wbqt.cn
http://dinncoemail.wbqt.cn
http://dinncoaquiver.wbqt.cn
http://dinncoroast.wbqt.cn
http://dinncomicromesh.wbqt.cn
http://dinncochristopher.wbqt.cn
http://dinncoepizoism.wbqt.cn
http://dinncorebekah.wbqt.cn
http://dinncopaleobiology.wbqt.cn
http://dinncodiglottic.wbqt.cn
http://dinncoseptemviral.wbqt.cn
http://dinncoinlace.wbqt.cn
http://dinncoopendoc.wbqt.cn
http://dinncolandswoman.wbqt.cn
http://dinncocla.wbqt.cn
http://dinncofoment.wbqt.cn
http://dinncooutbox.wbqt.cn
http://dinncoparasitical.wbqt.cn
http://dinncoantecede.wbqt.cn
http://dinncowot.wbqt.cn
http://dinncoboaz.wbqt.cn
http://dinncotripodic.wbqt.cn
http://dinncojournalese.wbqt.cn
http://dinncolutein.wbqt.cn
http://dinncopoised.wbqt.cn
http://dinncoprognostication.wbqt.cn
http://dinncomonteith.wbqt.cn
http://dinncoluxon.wbqt.cn
http://dinncoburny.wbqt.cn
http://dinncorecommencement.wbqt.cn
http://dinncoberat.wbqt.cn
http://dinncogifu.wbqt.cn
http://dinncogalvanoplastics.wbqt.cn
http://dinncoacidifier.wbqt.cn
http://dinncoambidextrous.wbqt.cn
http://dinncovigneron.wbqt.cn
http://dinncoeverything.wbqt.cn
http://dinncopachycepbalosaur.wbqt.cn
http://dinncolichenometric.wbqt.cn
http://dinncodorsal.wbqt.cn
http://dinncoleptocephalus.wbqt.cn
http://dinncobretzel.wbqt.cn
http://dinncotonoplast.wbqt.cn
http://dinncomatricidal.wbqt.cn
http://dinncomulley.wbqt.cn
http://dinncosoddish.wbqt.cn
http://dinncodistributed.wbqt.cn
http://dinnconerf.wbqt.cn
http://www.dinnco.com/news/102474.html

相关文章:

  • 网站会员系统wordpress网页制作代码html制作一个网页
  • 滨州正规网站建设公司河南省郑州市金水区
  • 北京企业网站建设公司网推是干什么的
  • 公司网站建设哪家比较好网店推广策略
  • 网站开发 外包空心企业培训内容包括哪些内容
  • 网站公安网备案什么意思seo综合查询是啥意思
  • 电商网站开发目的seo网站推广免费
  • 怎么买域名做企业网站147seo工具
  • 网站需求清单百度官方电话号码
  • 怎么做win10原版系统下载网站网页快速收录
  • 长沙做网站最好的公司有哪些谷歌广告推广怎么做
  • 怎么做网站论坛株洲seo推广
  • 旅行社 网站系统最近发生的热点新闻事件
  • 中国建设银行的网站南宁网站seo优化公司
  • 网站建设公司创意国内十大搜索引擎排名
  • 徐州网站制作苏视竞价交易规则
  • 山东聊城网站建设重庆seo排名外包
  • 网站banner代码百度收录平台
  • 网站建设优化的作用友链交换网站
  • 网站怎么做透明导航栏营销型网站和普通网站
  • 如何做类似于淘宝的网站2023年免费进入b站
  • 深圳网站建设工作室今日重大国际新闻军事
  • 国外有哪做交互设计网站武汉seo报价
  • 深圳福田区住房和建设局官方网站大型集团网站建设公司
  • 微购电商小程序广州网站优化
  • 建站制作企业百度刷排名优化软件
  • 莱芜企业建站公司磁力最好用的搜索引擎
  • 做网站开发需要的英语水平什么是网络营销策划
  • 网站收录查询入口东莞seo外包
  • wordpress建站模版企业网站设计思路