- 博客(29)
- 资源 (4)
- 收藏
- 关注
原创 ubuntu22.04 iris xe显卡遇到的问题
如果改成nomodeset,虽然这样花屏解决了,但是无法调整亮度,显卡信息也不对。ubuntu22.04 iris xe显卡遇到的问题。有的人可能会该改为nomodeset。使用ubuntu时花屏。
2023-05-12 10:16:48 1151 2
原创 将ubuntu中不安全的rm替换成mv
如果向恢复原来的rm命令。将~/.bashrc文件alias rm="saferm.sh"注释掉,然后重新开启一个终端就可以了。替换后在rm使用-r参数,会报出-r参数不适用,这是因为mv不支持-r。忽略这些提醒就可以。source ~/.bashrc使刚才的修改立即生效。1.新建一个存放删除文件的目录/home/flc/.rmtrash。2.在bin目录下新建一个脚本saferm.sh。3.修改~/.bashrc文件。
2023-05-09 11:43:29 187
原创 Triple Buffer介绍
Triple Buffer介绍 Buffer Queue介绍 上图主要是 dequeue、queue、acquire、release ,在这个例子里面,App 是生产者,负责填充显示缓冲区(Buffer);SurfaceFlinger 是消费者,将各个进程的显示缓冲区做合成操作。dequeue(生产者发起) : 当生产者需要缓冲区时,它会通过调用 dequeueBuffer() 从 BufferQueue 请求一个可用的缓冲区,并指定缓冲区的宽度、高度、像素格式和使用标记。 queu.
2022-02-11 15:27:45 2912
原创 给google提交代码
1.使用邮箱注册google账号,用于提交code。注册地址:https://accounts.google.com/signup/v2/webcreateaccount?flowname=glifwebsignin&flowentry=signup&nogm=true2.添加cla权限。地址:https://cla.developers.google.com/clas在页面name中输入邮箱,点击i agree。3.生成提交代码对应的git config。在网页https
2021-10-21 15:47:51 1042
原创 find_next_bit函数解析
位图:在Linux下,从数据结构上看,位图本质上是一个数组,数组的每个元素都是long型的(即32bit或64bit)。在32bit系统中位图如下:低地址: 31......0 63......32高地址:4095......4064上图中的数字就是各个bit位的标号,即索引。对于位图的操作,也就是对位图中bit位的操作。从作用上说,位图通常与其它数据相关联,用位图中的bit位对该数据进行统计或管理。在kernel4.14中从start开始找第一个0/1的index函数...
2021-10-21 15:44:31 517
转载 linux的initcall机制
linux的initcall机制(针对编译进内核的驱动)initcall机制的由来我们都知道,linux对驱动程序提供静态编译进内核和动态加载两种方式,当我们试图将一个驱动程序编译进内核时,开发者通常提供一个xxx_init()函数接口以启动这个驱动程序同时提供某些服务。那么,根据常识来说,这个xxx_init()函数肯定是要在系统启动的某个时候被调用,才能启动这个驱动程序。最简单直观地做法就是:开发者试图添加一个驱动程序时,在内核启动init程序的某个地方直接添加调用自己驱动程序的xxx_
2020-09-17 17:23:43 439
原创 linux cma 3种配置share pool的方法分析
初始化cma的share pool一共有dts、cmdline、config共3种。3种顺序是dts==>cmdline==>config。3种方式的实现方式如下:1.dts定义成share pool的方法是添加linux,cma-default;属性。2.cmdline方式是在cmdline添加:cma=128M(意思是cma share pool大小为128M)。3.config方式是开启如下两个config: CONFIG_CMA_SIZE_MBYTES=16 ...
2020-09-17 11:35:11 1879 1
转载 early_param分析
以cma的early_param分析下early_param这个宏。drivers/base/dma-contiguous.c定义了static int __init early_cma(char *p){ pr_debug("%s(%s)\n", __func__, p); size_cmdline = memparse(p, &p); return 0;}early_param("cma", early_cma);early_param是一个宏:.
2020-09-16 17:22:47 991
原创 顺序锁和读写锁代码走读
在移植speculative page fault代码时发现开发者巧妙的使用seqcount的特性来快速判断和标识vma区的变化,由于vma的修改由mmap_sem保证,所以开发只是用的seqcount而没有使用seqlock。将vma作为保护区,在开始结束位置调用begin和end。通过seqcount的值来快速判断vma区是否改变,只要seqcount值改变了就说明vma区改变了。对vma区进行保护的mmap_sem是rw_semaphore,该信号量适用于读多写少情况。借熟悉移植代码的机会,熟悉
2020-08-04 16:36:12 475 1
原创 pthread_create报出未定义错误
在c代码中包含了通文件pthread.h,#include<pthread.h>但还是报错了没有定义的错误:undefined reference to 'pthread_create'undefined reference to 'pthread_join'问题原因: pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork..
2020-05-29 15:44:05 685
原创 git clone时指定目录
1. 进入非空目录,假设是 /test/2. git clone ssh:****/test13. mv test1/.git . #将test1目录下的 .git 目录移到当前目录4. rm -rf test1 删除test1目录然后就可以进行各种正常操作了。
2020-05-18 17:02:09 1757
转载 fastboot烧录手机img
全编代码,将out/target/product/msm8909(msm8909为当前软件版本)下的所有image拿出来,放到一个目录,在该目录编写一个bash脚本:(我的生成的镜像就这么多,其他软件版本可能略有不同,需自行修改)adb reboot bootloadersudo fastboot flash boot boot.imgsudo fastboot flash cache ...
2020-04-28 13:54:27 553
原创 linux常用指令
find / | xargs grep function 查找系统根目录下面的所有文件的内容中包含有function字符串的文件列表。find .|xargs grep xfind . -exec grep x{} \;find / -name "httpd.conf"find / -name "rsync"为 什么会这样能,因为通道命令符是把上一部的结果传递给下一步来处理,在 find...
2020-01-08 10:03:36 139
原创 make defconfig savedefconfig olddefconfig区别
1. 如果.config不存在,运行make config/menuconfig时的缺省设置由固化在各个Kconfig文件中各项目的缺省值决定。2. 如果.config存在,运行make config/menuconfig时的缺省设置即是当前.config的设置,若对设置进行了修改,.config将被更新。3. make xxx_defconfig就是用arch/xxx/xxx_defconf...
2019-12-27 17:09:22 5568
转载 绕过kernel模块版本校验检测
kernel module version check bypass1、 举例说明2、 内核是怎么实现的3、 怎样去突破4、 总结1、 举例说明Linux内核版本很多,升级很快,2个小内核版本中内核函数的定义可能都不一样,为了确保不一致的驱动程序导致kernel oops,开发者加入了模块验证机制。它在加载内核模块的时候对模块进行校验, 如果模块与主机的一些环境不一致,就会加载不...
2019-12-20 15:11:35 1640
原创 sh脚本常用操作
1.获取路径及路径上的目录名获取路径名${}${var##*/}该命令的作用是去掉变量var从左边算起的最后一个'/'字符及其左边的内容,返回从左边算起的最后一个'/'(不含该字符)的右边的内容。使用例子及结果如下:从运行结果可以看到,使用该命令,可以提取出我们需要的文件名file.txt。获取路径$(readlink -f $(dirname $0)/../..)$0...
2019-11-29 15:27:38 759
转载 fatal error: openssl/bio.h: No such file or directory 解决方案
出现这个或者fatal error: openssl/名单.h: No such file or directory。都是没有安装libssl-dev~libssl-dev包含libraries, header files and manpages,他是openssl的一部分,而openssl对ssl进行了实现~解决方案:使用sudo apt-get install libssl-de...
2019-11-22 19:27:18 3963
转载 linux下configure命令详细介绍
linux下configure命令详细介绍Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常 普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工 具的基本应用。与一些技巧相比,Configure显得基础一些,当然使用和...
2019-11-22 14:15:05 120
原创 使用nm查看库文件中的符号
使用nm查看库文件中的符号。指令和结果如下:nm -a libdw.so | grep elf_compress U elf_compress@@ELFUTILS_1.7 U elf_compress_gnu@@ELFUTILS_1.7...
2019-11-21 10:58:34 550
原创 ubuntu 软件降级
ubuntu 软件降级:安装libxml2-dev出现如下log:The following packages have unmet dependencies:libxml2-dev : Depends: libxml2 (= 2.9.1+dfsg1-3ubuntu4) but 2.9.1+dfsg1-3ubuntu4.7 is to be installedE: Unable t...
2019-11-19 14:09:07 499
原创 安装libssl-dev出现depends错误解决办法
安装libssl-dev出现depends错误log:sudo apt-get install libssl-devReading package lists... DoneBuilding dependency tree Reading state information... DoneSome packages could not be installed. Th...
2019-11-14 19:17:36 3149
原创 python语法需注意的地方
list的index值输出,list[1:5]输出是[1:5),冒号后面的list值是不包含在内的。#!/usr/bin/pythonlist1 = ['physics', 'chemistry', 1997, 2000]list2 = [1, 2, 3, 4, 5, 6, 7 ]print "list1[0]: ", list1[0]print "list2[1:5]: ",...
2019-11-13 18:11:11 122
原创 git生成patch及合入patch
1.找到需要升级的patch:git log //需要升级patch的文件目录查看所有需要升级的提交2.生成可以合入的patch文件git format常用命令:git format-patch -3 //从当前分支最新提交点往下共生成3个补丁git format-patch -1 指定commit号 //生成指定commit号的补丁在本目录下升级对应的patch,命名如下:...
2019-10-28 13:36:21 4397
转载 TLB的作用及工作过程
TLB的作用及工作过程以下内容摘自《步步惊芯——软核处理器内部设计分析》一书 页表一般都很大,并且存放在内存中,所以处理器引入MMU后,读取指令、数据需要访问两次内存:首先通过查询页表得到物理地址,然后访问该物理地址读取指 令、数据。为了减少因为MMU导致的处理器性能下降,引入了TLB,TLB是Translation Lookaside Buffer的简称,可翻译为“地址...
2019-10-25 14:09:17 1771
转载 个性化你的Git Log的输出格式
个性化你的Git Log的输出格式git已经变成了很多程序员日常工具之一。git log是查看git历史的好工具,不过默认的格式并不是特别的直观。很多时候想要更简便的输出更多或者更少的信息,这里列出几个git log的format。可以根据自己的需要定制。git log命令可一接受一个--pretty选项,来确定输出的格式.如果我们只想输出hash.git log --pre...
2019-10-17 18:07:15 145
转载 为什么全局描述符表GDT的第0项总是一个空描述符
为什么全局描述符表GDT的第0项总是一个空描述符,而局部描述符表却不是这样?386的保护模式下:DT=GDT*1+IDT*1+LDT*nIDT和每个LDT都要到GDT中报一次到。一个描述符项与一张表对应。什么是描述表呢?其实很简单。1个段描述表记录一个段的特征信息,中断描述符表记录中断的端口和其对应的函数入口地址或门的入口函数地址,全局描述表GDT记录所有表的地址。其中的项称之为...
2019-10-17 09:51:58 434
转载 C语言ASM汇编内嵌语法
C语言ASM汇编内嵌语法zz.3 GCC Inline ASMGCC 支持在C/C++代码中嵌入汇编代码,这些汇编代码被称作GCC Inline ASM——GCC内联汇编。这是一个非常有用的功能,有利于我们将一些C/C++语法无法表达的指令直接潜入C/C++代码中,另外也允许我们直接写 C/C++代码中使用汇编编写简洁高效的代码。1.基本内联汇编GCC中基本的内联汇编非常易懂,我们先来看...
2019-10-16 10:50:57 303
转载 linux下svn常用指令
本文为转载,如原作者禁止转载,请联系删除。SVN(Subversion)是一个自由、开源的项目源代码版本控制工具。目前,绝大多数开源软件和企业代码管理,都使用SVN作为代码版本管理软件。Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器。不同的是,它可以记录每一次文件和目录的修改情况,这样就可以在需要的回滚时,将数据恢复到以前的版本,并可以查看数据的更改细节。...
2019-10-15 16:00:39 408
原创 linux源码在线查看及下载
在线查看linux代码的网站https://elixir.bootlin.com/在线下载linux代码方法:git initgit clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gitgit clone git://git.kernel.org/pub/scm/linux/kern...
2019-09-27 11:18:46 1470
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人