
3.0版本[编辑]
托瓦兹宣布,大的变化是,“没有,绝对没有。132011年5月30日,托瓦兹宣布,“让我们确保我们真正的下一个版本不只是一个全新的闪亮的数字,而是有一个好的内核。”3.0的发布日接近Linux的20周年纪念日。
3.5版本[编辑]
·CoDel队列管理算法
seccomp filters
·沙盒机制
·Android风格的自动休眠和唤醒锁机制
·用户空间探测子系统uprobes TCP连接修复
减少重复确认加快转发的 TCP Early Retransmit
。连续性内存分配器
·kcmp()系统调用
·ext4文件系统加入元数据校验和
·改进Btrfs
3.6版本[编辑]
.客户端 TCP Fast Open实现
等等,更详细Linux知识可参考下《Linux就该这么学》。
三星Galaxy S20+参数:
1、上市日期:2020年03月
2、屏幕类型:全面屏(极点屏)
3、出厂系统内核:Android 10
4、 *** 作系统:One UI 2.0
5、CPU型号:高通 骁龙865
6、机身颜色:幻游黑,遐想灰,浮氧蓝,馥郁红
7、解锁方式:屏幕指纹识别(超声波)
8、触摸屏类型:电容屏,多点触控
9、主屏尺寸:6.7英寸
10、主屏材质:Dynamic AMOLED
11、主屏分辨率:3200x1440像素
12、屏幕像素密度:524ppi
13、屏幕技术:康宁六代大猩猩玻璃
14、屏幕刷新率:120Hz
15、屏幕:护眼显示屏,1600万色 护眼显示屏,1600万色
16、核心数:八核
17、GPU型号:高通 Adreno650
18:RAM容量:12GB
19、ROM容量:128GB
20、存储类型:RAM:LPDDR5,ROM:UFS 3.0
21、存储卡:MicroSD卡
22、扩展容量:1TB
23、电池类型:不可拆卸式电池
24、电池容量:4500mAh
25、理论待机时间:345小时
26、电池充电:快速充电(15W无线充电,25W有线充电,反向充电)
27、SIM卡类型:双卡(三选二卡槽,双Nano-Sim卡或单Nano-Sim卡+单micro-SD卡)
28、摄像头总数:四摄像头(后三)
29、后置摄像头:1200万像素超广角镜头+1200万像广角镜头+6400万像素长焦镜头+VGA镜头
30、前置摄像头:1000万像素
31、手机尺寸:161.9x73.7x7.8
32、手机重量:186g
33、多媒体技术:杜比全景声
34、常用功能:秒表,计算器,电子词典,备忘录,日程表,记事本
35、三防功能:IP68等级
参考资料来源:中关村-三星Galaxy S20+
systrace是通过atrace和ftrace一起实现。
抓取systrace的adb命令如下:
adb shell atrace -t 8 -z gfx view wm am sched freq input >atrace
python命令:
python systrace.py -b 10240 -t 10 wm am input ss power view freq workq sched idle sync gfx view hal dalvik disk -a com.tencent.mm -o PD1982_weixin.html
systrace抓取实质是通过atrace实现,下面以ATRACE_CALL()为例说明systrace实现
system/core/libutils/include/utils/Trace.h
system/core/libcutils/include/cutils/trace.h
system/core/libcutils/trace-dev.cpp
system/core/libcutils/trace-dev.inc
到这可以看出:
ATRACE_CALL其实就是往atrace_marker_fd写入函数名和进程pid等信息,其中atrace_marker_fd对应“/sys/kernel/debug/tracing/trace_marker”文件
systrace在内核层实质是通过ftrace来实现,systrace的内容是写入内核分配的ringbuffer里面的,开关的实质是disable/enable ringbuffer,ftrace的总开关/sys/kernel/debug/tracing/tracing_on
开关ftrace命令如下:
adb shell echo 1 >/sys/kernel/debug/tracing/tracing_on
adb shell echo 0 >/sys/kernel/debug/tracing/tracing_on
通过tracing_mark_write函数把内容写入ringbuffer
msm-4.19/kernel/trace/trace.c
大致原理参考下图:
ftrace就是function trace的缩写,每个函数的追踪都有一个对应的tracepoint结构来表示,这个结构存放在特殊的section内存中。
msm-4.19/include/linux/tracepoint-defs.h
3.1 tracepoint的probe函数注册
以高通gpu驱动ftrace为例,通过以下命令可以触发tracepoint的probe函数注册
adb shell echo 1 >/sys/kernel/debug/tracing/events/kgsl/enable
msm-4.19/kernel/tracepoint.c
tracepoint的probe函数实质是在下面这个宏里面定义,通过这个函数ftrace往对应的ringbuffer里面写入函数追踪数据
msm-4.19/include/trace/trace_events.h
3.2 probe函数的调用
以高通gpu驱动入列一条绘制命令_queue_drawobj函数为例
msm-4.19/drivers/gpu/msm/adreno_dispatch.c
通过trace_adreno_cmdbatch_queued来追踪_queue_drawobj函数,调用tracepoint的probe函数
接下来看下trace_adreno_cmdbatch_queued的实现
msm-4.19/drivers/gpu/msm/adreno_trace.h
trace_adreno_cmdbatch_queued真正定义在下面这个宏里面
msm-4.19/include/linux/tracepoint.h
最终调用到tracepoint注册的probe函数
msm-4.19/include/linux/tracepoint.h
总结下:Native层调用内核的tracing_mark_write来往ftrace的ringbuffer里面写入数据,而内核函数调用其对应probe函数往ftrace ringbuffer写入数据。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)