自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Android性能分析工具trace event (2)trace event抓取

buffer_size_kb:每个CPU对应的ring buffer长度,以kb为单位,trace日志保存在ring buffer中,越大缓存的日志越多。buffer_total_size_kb:ring buffer总长度,等于CPU个数乘以buffer_size_kb。trace_pipe:打印ring buffer中缓存的trace日志,打印完后不退,有新日志写入时,继续打印。tracing_on:ring buffer开关节点,如果不打开,没有地方保存trace日志。

2023-10-06 21:24:06 381

原创 Android性能分析工具trace event (1)trace event框架

一个trace_event_file对应一个trace_event_call,一个trace_event_call对应一个trace_event_class,首先要在events目录下创建trace_event_class同名目录,存放在global_trace的成员struct list_head systems内核链表中,再在trace_event_class同名目录下创建tracepoint同名目录。struct static_key key为false,其余三个成员均为null。

2023-09-25 19:00:08 730

原创 Android性能分析工具strace (4)strace流程之系统调用参数解析

可以看出,在ARM64上,系统调用号保存在x8寄存器,参数arg1--arg6,保存在x0--x5寄存器中,返回值时,将返回值保存在x0寄存器。不同平台的arch_get_scno()函数实现不一样,ARM64的实现代码如下,可以看出,ARM64是从x8寄存器读取的系统调用号。open系统调用的参数解析规则如下,第一个参数为打开文件路径,第二参数为打开标志,当第二个参数含有O_CREAT或STRACE_O_TMPFILE时,存在第三各参数新建文件权限。(*sys_func)()为参数解析函数。

2023-09-18 20:18:28 308

原创 Android性能分析工具strace (3)strace流程之strace等待目标进程通知

ptrace_do_wait()-->wait_task_stopped()调用task_stopped_code()获取子进程退出码,然后将退出码拷贝到 wait4 ()的 int *status参数指向的地址(该地址保存在 wo->wo_stat),这样strace在退出wait4() 时子进程的退出码就保存到了 int *status参数指向的地址。设置进程为可中断睡眠状态,然后调用schedule()进入可中断睡眠状态,等待被跟踪进程在系统调用时会唤醒自己。调用ptrace_notify()。

2023-09-13 20:00:27 462

原创 Android性能分析工具strace (2)strace流程之ptrace跟踪目标进程系统调用

ptrace定义为long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data),参数 request是请求类型,其中PTRACE_ATTACH用于建立tracer和tracee关系,PTRACE_SYSCALL用于跟踪pid对应tracee的系统调用。ptrace_request()根据请求类型的不同调用不同的函数处理,PTRACE_SYSCALL请求类型对应的是ptrace_resume()。

2023-09-11 19:24:11 648 1

原创 Android性能分析工具strace (1)strace使用简介

strace用于跟踪系统调用,Android系统提供了strace源码,位于externa l/strace。把strace添加到PRODUCT_PACKAGES,重新编译即可在system/bin目录下找到strace。Filtering选项,添加过滤条件,-e指定跟踪某些系统调用,-P指定跟踪对某文件的系统调用。例如strace -p 11953,跟踪pid为11953进程的系统调用。-c统计系统调用时间,-C统计系统调用时间,同时控制台有打印。-T打印每个系统调用的耗时。

2023-09-05 23:50:39 1045 1

原创 MTK温控简介

Linux的Thermal机制是基于Zone为单位的热管理机制,核心包括三个部分:获取区域温度的设备thermal_zone_device,对区域降温的设备thermal_cooling_device,温控策略thermal_governor。thermal_zone_device注册:调用thermal_zone_device_register()注册thermal_zone_device,所有注册的区域温度采集设备,链接到thermal_tz_list。注册thermal_zone_device。

2023-07-24 22:28:01 2963

原创 Android系统目录树建立过程

do_add_mount()-->graft_tree()-->attach_recursive_mnt()先调用mnt_set_mountpoint()建立起子mount与父mount之间的关系,再调用commit_tree()-->__attach_mnt()将子mount加入到hash表mount_hashtable中,该哈希表的键值由父mount和挂载目标目录组成。mount_fs()调用对应文件系统类型的mount接口,来创建对应文件系统的super_block和根目录。

2023-06-19 22:21:12 927

原创 Linux Input子系统源码分析

input_dev注册的一个重要任务就是将input_dev链入到input_dev_list中。应用程序打开节点时,会调用evdev_open创建evdev_client并放到文件的private_data中,evdev_client链入到evdev的client_list中,可见打开一次创建一个evdev_client。input_handler注册函数会将input_handler都链入input_handler_list中,并遍历input_dev_list检查是否有input_dev与之匹配。

2023-06-10 18:22:49 332 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除