
Linux
文章平均质量分 82
Kian_G
一只懂点心理学,会点摄影的码农
展开
-
Linux 内核使用浮点问题
一、硬浮点与软浮点1. 硬浮点编译器将代码直接编译成硬件浮点协处理器(浮点运算单元FPU)能识别的指令,这些指令在执行的时候ARM核直接把它转给协处理器执行。FPU 通常有一套额外的寄存器来完成浮点参数传递和运算。使用实际的硬件浮点运算单元(FPU)会带来性能的提升2. 软浮点编译器把浮点运算转成浮点运算的函数调用和库函数调用(即用整数运算模拟浮点运算),没有FPU的指令调用,也没有浮点寄...原创 2020-04-12 12:52:20 · 4721 阅读 · 1 评论 -
LINUX 进程优先级与调度策略
1. 调度策略//https://android.googlesource.com/kernel/common/+/refs/heads/android-4.14/include/uapi/linux/sched.h......./* * Scheduling policies */#define SCHED_NORMAL 0#define SCHED_FIFO 1#defin...原创 2019-11-02 16:28:35 · 3042 阅读 · 0 评论 -
Ext4及F2FS文件系统 Debug
CONFIG_F2FS_CHECK_FS再内核的config中可以使能这个宏,其会对F2FS文件系统进行更多的逻辑检查,如果检查到错误会触发bug on抓取 f2fs ftrace eventecho 0 > /d/tracing/tracing_onecho 204800 > /d/tracing/buffer_size_kbecho "" > /d/tra...原创 2019-11-02 16:05:50 · 2539 阅读 · 0 评论 -
SDcardFS文件系统浅析(四)- cat 过程
SDcardFS文件系统浅析(四)- cat 过程我们暂时先跳过源码,通过在sdcardfs文件系统中cat一个文件的过程,来了解sdcardfs的调用过程,在对其调用流程有个清晰理解后再去看代码,会事半工倍。通过ftrace设置graph_function跟踪内核在cat 文件时sdcardfs的调用流程如下sdcardfs cat过程权限检查//权限检查,检查打开文件...原创 2018-05-24 22:01:48 · 2547 阅读 · 0 评论 -
SDcardFS文件系统浅析(五)- sdcardfs在文件系统调用中
SDcardFS文件系统浅析(五)- sdcardfs在文件系统调用中上一节从ftrace中可以看到在cat过程中sdcardfs调用顺序,我们知道了sdcardfs的调用流程,但是这些函数在整个文件系统的调用中是怎么配合的,怎么被串起来的?下面补齐缺失的trace,来看下其在整个文件系统调用中的位置。食用下面ftrace log需要有一定的文件系统基础,可以配合这个博客:open()在Lin...原创 2018-06-06 21:34:52 · 2612 阅读 · 1 评论 -
Ftrace 调试linux内核
Ftrace 调试linux内核简介ftrace 是内建于 Linux 内核的跟踪工具,从 2.6.27 开始加入主流内核。使用 ftrace 可以调试或者分析内核中发生的事情。ftrace 提供了不同的跟踪器,以用于不同的场合,比如跟踪内核函数调用、对上下文切换进行跟踪、查看中断被关闭的时长、跟踪内核态中的延迟以及性能问题等。系统开发人员可以使用 ftrace 对内核进行跟踪调试,以找到内核...原创 2019-04-21 15:24:16 · 874 阅读 · 0 评论 -
float double在内核转换为int
float double在kernel转换为int目前大多数CPU都支持浮点运算单元,但是对于低端的嵌入式处理器可能就会去掉浮点协处理器。在调试一个sensor就遇到这个问题,由于这个处理器是32位arm,比较低端,没有浮点运算,而在开发过程中又需要将float转为int,因此就需要软件模拟浮点运算来实现。存储结构存储方式是用科学计数法来存储数据的。Tip科学记数法 是一种以记下极大...转载 2019-04-21 15:40:24 · 1118 阅读 · 0 评论 -
Android P SElinux权限调试
Android P SElinux权限调试在Android P上要开发一个开机过程中运行bin程序,在Android O上权限问题还算比较好解决,而在 Android P上面由于谷歌收紧了 Android SElinux控制,增加了许多neverallow规则,导致调试权限十分不便开发的bin程序由于要开机运行,因此需要通过init.rc去启动这个bin程序severe。而这个bin程序要去控...原创 2019-04-21 16:10:51 · 7072 阅读 · 4 评论 -
Low memory Killer
Low memory Killer代码位置drivers/staging/android/lowmemorykiller.c控制节点sys/module/lowmemorykiller/parameters/adjadj_max_shiftcostdebug_levelenable_adaptive_lmkenable_lmklmk_fast_runminfree...原创 2019-04-21 16:20:07 · 572 阅读 · 0 评论 -
LINUX内核调试
LINUX内核调试BUG_ON and BUG在内核调试中用来方便标记bug,提供断言并输出信息。最常用的两个是BUG()和BUG_ON()。其会引发oops,导致栈的回溯和错误信息打印BUG()使用:if (bad_thing) BUG();但是常用BUG_ON()BUG_ON(bad_thing);WARN_ON会调用dump_stack,打印堆栈信息,但不会O...原创 2019-04-21 16:41:11 · 538 阅读 · 0 评论 -
Android 存储信息查看
存储信息查看df查看不包含superblock包含内存文件系统SW:/ $ df -hFilesystem Size Used Avail Use% Mounted onrootfs 297M 2.7M 294M 1% /tmpfs ...原创 2019-04-21 16:44:29 · 737 阅读 · 0 评论 -
MTK安卓启动流程
MTK安卓启动流程注:ARMv8架构中的EL0、EL1、EL2、EL3层级对应关系EL0 – appEL1 – kernel、lkEL2 – 虚拟化一般不用EL3 – ARM trust firmware、preloader启动流程boot rompreloaderlittle kernelkernel上电先启动boot rom —->复位SOC、初...转载 2018-04-01 17:04:07 · 1508 阅读 · 0 评论 -
platform设备模型
platform设备模型platform设备驱动,对与usb、iic等有总线依附的设备可以不用考虑,对于不依附于此类总线比较特殊设备,提供platform虚拟总线来完成,例如网卡、LCD这些。这些设备有一个基本的特征:可以通过CPU bus直接寻址(例如在嵌入式系统常见的“寄存器”)。由于这个共性,内核在设备模型的基础上(device和device_driver),对这些设备进行了更进一步...原创 2018-04-01 17:02:13 · 282 阅读 · 0 评论 -
SDcardFS文件系统浅析(一) - sdcarfs历史
SDcardFS文件系统浅析(一) - sdcarfs历史由于安卓O的已经官方支持SDcardFS文件系统,在开发过程中也遇到一些问题,特此浅要分析下SDcardFS1、Fuse(Filesystem in Userspace)早期的android系统没有使用fuse文件系统后来android为了控制不同APP对文件访问的权限,使用了fuse文件系统。早期手机内置SD卡使用一个独立...原创 2018-04-01 18:09:21 · 14087 阅读 · 1 评论 -
SDcardFS文件系统浅析(三) - SDcardfs挂载过程
SDcardFS文件系统浅析(三) - SDcardfs挂载过程源码kernel/fs/sdcardfs/main.c挂载过程在init_sdcardfs_fs函数中,下面简要看下源码,分析下挂载过程init_sdcardfs_fs函数分析kernel/fs/sdcardfs/main.cstatic int __init init_sdcardfs_fs(void){in...原创 2018-04-07 16:29:19 · 4817 阅读 · 0 评论 -
LINUX常用命令
LINUX常用命令硬件相关lscpu #查看的是cpu信息.cat /proc/cpuinfo #查看CPU信息详细信息free -m #概要查看内存情况,单位MB -g GBcat /proc/meminfo #查看内存详细信息lsblk #查看...原创 2018-03-30 20:23:29 · 561 阅读 · 0 评论 -
SELinux权限
SELinux权限SELinux简介SELinux是2.6版本Linux内核中提供的强制访问控制系统,selinux默认配置在/etc/sysconfig/selinux。默认有三种级别enforcing Linux下 selinux所设置的安全策略都会被启用.所有与selinux安全策略有关的服务或者程序都会被策略阻止.也就是,所有操作都会进行权限检查。permissi...原创 2018-03-30 20:26:44 · 5831 阅读 · 0 评论 -
内核锁浅析
内核锁浅析1. 临界区临界区:访问和操作共享数据的代码段,在多线程并发访问同一资源时,有可能会导致数据读写异常,多线程之间相互竞争,并且问题不容易复现,调试困难,所以需要引入临界区保证代码段是原子性的,要么执行,要么不执行,不容许执行过程中被打断。2. 锁在许多cpu体系结构中,提供了简单的原子操作,例如:算数运算中的自增自减等原子操作。但是在体系结构中没有特定指令对 不定长度...原创 2018-03-30 20:35:00 · 419 阅读 · 0 评论 -
Linux设备树
设备树组成DTS有一系列node(节点)和property(属性),节点可以包含更多子节点,DTS主要描述设备信息CPU的数量及类别内存基地址和size总线和桥外设连接中断GPIOCLOCK其有以下几种特性:每个设备树文件都有一个根节点,每个设备都是一个节点。节点间可以嵌套,形成父子关系,这样就可以方便的描述设备间的关系。每个设备的属性都用一组key-...原创 2018-03-30 20:38:53 · 384 阅读 · 0 评论 -
fallocate快速创建大文件
以前创建文件我一般用dd来创建,例如创建一个512M的文件:dd命令可以轻易实现创建指定大小的文件,如dd if=/dev/zero of=test bs=1M count=1000会生成一个1000M的test文件,文件内容为全0(因从/dev/zero中读取,/dev/zero为0源)但是这样为实际写入硬盘,文件产生速度取决于硬盘读写速度,如果欲产生超大文件,速度很慢在...转载 2016-04-22 14:01:33 · 1457 阅读 · 0 评论 -
让Linux终端中执行的程序在后台运行
在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了: $ ./test.sh & [1] 17208 $ jobs -l [1]+ 17208 Running ./test.sh & 对于已经在前台执行的命令,也可以重新放到后台执行,首先按ctrl+z暂停已经运行的进程,然后使...转载 2016-05-05 14:46:47 · 427 阅读 · 0 评论 -
安卓调试及抓log方法
安卓调试及抓log方法抓loglogcat使用Android对日志分为mian的日志、system的日志、event的日志,kernel的日志,Radio的日志:[adb] logcat [] … [] …-b 指定要查看的日志缓冲区,可以是system,events ,radio,main。默认值是system和main -c 清除屏幕上的日志. 抓取上层的日志:...原创 2018-03-30 20:49:37 · 6105 阅读 · 0 评论 -
字符设备驱动
字符设备驱动1.1 主设备号与此设备号在构建字符设备驱动时候需要获得设备编号,类似于汽车牌照,没有没办法上路。主设备号标识设备对应的驱动程序,而次设备号由内核使用,用于确定/dev下的设备文件对应的具体设备。eg:虚拟控制台和串口终端有驱动程序4管理,而不同的终端分别有不同的次设备号。MAJOR(dev_t dev); 获取主设备号MINOR(dev_t dev); ...原创 2018-03-30 20:51:36 · 201 阅读 · 0 评论 -
总线,设备,驱动之间关系
总线,设备,驱动之间关系再看I2C驱动迷茫时候看到《 从需求的角度去理解Linux系列:总线、设备和驱动 》,感觉豁然开朗,根据博客内容简单总结一下。1、总线总线代表同类设备需要共同遵守的时序,不同总线硬件的通信时序也是不同的,如I2c总线、USB总线、PCI总线……2、设备设备代表真实存在的物理器件,每个器件有自己不同的通信时序,I2C、USB这些都代表不同的时序,这...原创 2018-03-30 20:53:27 · 8217 阅读 · 2 评论 -
Linux IIC驱动
Linux IIC驱动层次关系I2C core:对I2C总线、I2C adapter及I2C driver管理I2C adapter :针对不同类型的I2C控制器,实现对总线访问的具体方法I2C driver:针对特定I2C设备的具体操作,read、write、ioctl……core 简化对设备编程,不用考虑硬件的接口,提高驱动的移植性。I2C的core层的代码,就...原创 2018-04-01 16:44:13 · 672 阅读 · 0 评论 -
SDcardFS文件系统浅析(二) - inode、dentry、super_block
SDcardFS文件系统浅析(二) - inode、dentry、super_block在开始之前,首先得理解文件系统中inode、dentry、super_block的含义,下面简单介绍下这三个结构的作用,但不做代码层面分析,有个大概认知即可,如果详细了解,可以Google或者百度inodeinode索引节点,操作系统读取硬盘的时候,不会一个个扇区地读取,而是一次性连续读取多个扇区...原创 2018-04-07 16:04:01 · 1881 阅读 · 0 评论