linux v3.x 是什么

linux v3.x 是什么,第1张

指Linux的版本。比如:

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写入数据。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7141480.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-02
下一篇2023-04-02

发表评论

登录后才能评论

评论列表(0条)

    保存