- 博客(25)
- 资源 (2)
- 收藏
- 关注
原创 sysfs “wakeup%d“节点的创建
can_wakeup,标识本设备是否具有唤醒能力。只有具备唤醒能力的设备,才会在sysfs中有一个power目录,用于提供所有的wakeup信息,这些信息是以struct wakeup_source的形式组织起来的。device结构体,里面有一个成员struct dev_pm_info power,函数device_init_wakeup围绕can_wakeup和wakeup_source这两个概念进行一系列的逻辑处理。
2023-12-05 10:35:21 180
原创 E xx: xxxx:xx ERR thread 0x536753929472 setscheduler failed Operation not permitted
Android 线程优先级设定
2022-07-08 09:51:57 778 1
原创 使用Linux环境变量
1.全局变量1.1.查看全部全局变量:env命令、printenv命令xxxx@xxxx:~$ printenv1.2.查看个别环境变量:printenv命令、echo命令xxxx@xxxx:~$ printenv HOME/home/xxxxxxxx@xxxx:~$ echo $HOME/home/xxxx1.3.让变量作为命令行参数:ls命令xxxx@xxxx:~$ ls $HOME等效于:xxxx@xxxx:~$ ls /home/xxxx/2.局部变量2.1.Li
2022-04-18 11:19:15 1395
原创 linux 读取·设置线程名
1.prctl - operations on a processThe prctl() system call was introduced in Linux 2.1.57.头文件:#include <sys/prctl.h>函数原型:int prctl(int option, unsigned long arg2, unsigned long arg3,unsigned long arg4, unsigned long arg5);用例:prctl(PR_SET_NAME,
2022-04-13 09:58:04 1399
原创 Linux查看指定进程的线程
1.通过ps命令的“-T”选项-T Show threads, possibly with SPID column.$ ps -T -p <pid>2.通过top命令的“-H”选项-H :Threads-mode operationtop -H -p <pid>
2022-04-12 17:43:25 2841
原创 内存泄漏检测工具
诊断用户态程序内存泄漏最流行的工具是Valgrind。对于内核,类似的工具是kmemleak。参考信息:http://linuxperf.com/?p=188https://blog.csdn.net/furongwei123/article/details/124126294
2022-04-12 16:19:14 232
原创 memleak的使用
1.在Device-tree的bootargs中,追加如下参数,使memleak有效。文件:/kernel/msm-5.4/arch/arm64/boot/dts/xxxx/sa8155p-xxxx.dts参数:bootargs=“kmemleak=on”2.配置内核,使能Kernel Memory Leak Detector文件:android/vendor/xxxx/kernel/alap-linux/arch/arm64/configs/vendor/xxxx/xxxx_icb8155.
2022-04-12 16:08:08 3143
原创 Android Property服务
path:android/system/core/init/property_service.cpp关键字:1."/dev/properties"2.启动时机:Android启动的第二阶段(SecondStageMain)void PropertyInit() { selinux_callback cb; cb.func_audit = PropertyAuditCallback; selinux_set_callback(SELINUX_CB_AUDIT, cb);
2022-03-24 16:04:29 3036
原创 Android:通过Android.mk追加编译宏开关
下记代码,实现当BOARD_SUPPORTS_EARLY_INIT为true时,追加宏DAIS_DMESG_LOGOUTPUT的定义:ifeq ($(BOARD_SUPPORTS_EARLY_INIT),true)LOCAL_CFLAGS += -DAIS_DMESG_LOGOUTPUTendif
2022-03-24 15:12:33 3096
原创 Android Makefile文件list
通过这些文件可确认mk文件是否被编入android/out/.module_paths/Android.bp.listandroid/out/.module_paths/Android.mk.listandroid/out/.module_paths/AndroidProducts.mk.listandroid/out/.module_paths/CleanSpec.mk.list
2022-03-24 14:20:58 3011
原创 ... used greatest stack depth: xxx bytes left
配置“CONFIG_DEBUG_STACK_USAGE”,将让内核监视栈的使用(打印最大栈深度),并通过sysrq按键输出一些统计信息。#ifdef CONFIG_DEBUG_STACK_USAGEstatic void check_stack_usage(void){ static DEFINE_SPINLOCK(low_water_lock); static int lowest_to_date = THREAD_SIZE; unsigned long free; free = sta
2022-01-24 14:55:36 1824
原创 利用/dev/kmsg字符设备进行log输出
fp = fopen("/dev/kmsg", "w"); if (NULL != fp) { fprintf(fp, " %s", p->mem_buf); fclose(fp); rc = 0; }
2022-01-21 16:41:50 761
原创 限制printk的打印数量 -- pr_emerg_ratelimited
/* * ratelimited messages with local ratelimit_state, * no local ratelimit_state used in the !PRINTK case */#ifdef CONFIG_PRINTK#define printk_ratelimited(fmt, ...) \({ \ static DEFINE_RATELIMIT_STATE(_rs, \ DEFAULT_RATELIMI
2021-12-28 14:42:59 687
转载 被SLC、MLC、TLC搞晕?一文了解所有闪存类型
通常情况下,固态硬盘(SSD)的底层NAND架构会因模型而异。NAND 闪存的每种类型——SLC、MLC、eMLC和TLC——都有不同的特性,并因此对您的数据存储产生不同的影响,在这篇文章中,我们会讨论这些差异。目前,闪存可以说彻底改变了企业数据存储,与机械硬盘(HDD)相比,SSD封装使存储子系统和阵列能够提供出色的应用性能,并能在业务分析和其他工作负载下快速工作。在个人电脑和移动设备中,闪存能够加速应用程序启动时间和加速数据传输。而且由于闪存没有可移动部件,所以SSD几乎不容易受到突然移动和物理冲击
2020-05-15 20:44:37 957
原创 内核编译准备之【build-essential包】
build-essential里面包括一些Linux下开发的必要工具。在Ubuntu12.04中,gcc是已安装好的,但是其还缺少常用的头文件和库文件,所以还需要安装build-essential这个包,可以在联网状态下使用如下命令来安装这个包。$ sudo apt-get install build-essential系统在安装build-essential时,会把程序文件放入以下几个目录...
2020-04-15 20:45:19 2560
原创 内核编译准备之【libssl-dev 库】
libssl-dev是OpenSSL通用库SSL也即Secure Socket Layer,是由网景公司为了传输敏感数据而提出的协议。SSL使用私钥加密传输的数据,防止被窃听。SSL最普遍的使用适合和浏览器结合使用,但是其他很多的应用也可以使用SSL。一般而言,使用了SSL的URL以https开头。OpenSSL是广泛使用的商业级SSL工具。...
2020-04-15 20:30:49 1199
原创 内核编译准备之【Ncurses 库】
GNU Ncurses 是一个允许用户编写基于文本的用户界面(TUI)的编程库。许多基于文本的游戏都是使用这个库创建的。比如 PacVim,这是一款学习 VIM 命令的 CLI 游戏。下面介绍如何在类 Unix 操作系统中安装 Ncurses 库。Ncurses 在大多数 Linux 发行版的默认仓库中都有。在基于 Arch 的系统上:sudo pacman -S ncurses...
2020-04-15 20:15:18 576
原创 指针
名字与内存位置之间的关联并不是硬件所提供的的,而是由编译器为我们实现的。硬件仍然通过地址访问内存位置。间接访问操作符只能用于指针类型表达式。所以,*100 = 25 这种用法是错误的,*(int *)100 = 25;是正确的用法。指针运算:指针 ± 整数 适用只想数组中某个元素的指针及适用malloc函数动态分配的内存指针 = 指针 只适用于两个指针都是指向同一个数组中的元素...
2020-04-12 18:49:02 117
原创 存储空间动态分配:malloc,calloc,realloc
1,malloc分配指定字节数的存储区,不初始化。2,calloc未指定数量指定长度的对象分配存储区,每一位都初始化为0。3,realloc增加或减少已分配区的长度,新增区域初始值不确定。特点:返回值都是通用指针void *,这个指针一定是适当对齐的,以便可以适用任何对象。...
2020-04-12 08:09:09 208
原创 进程终止:exit(),_exit(),_Exit()的异同
exit(),_exit(),_Exit()exit(),_exit(),_Exit()的异同#三个函数皆用于正常终止一个程序:_exit(),_Exit() — 立即进入内核exit() — 总是执行一个标准I/O库的清理关闭操作:对于所有打开流调用fclose函数。(输出缓冲中所有数据都被清洗,写到文件上)#main函数返回一个整型值与用该值调用exit是等价的。即,exit(0)...
2020-04-11 22:02:55 195
原创 编译内核错误:cc1: error: invalid option `abi=aapcs-linux'
编译内核是出现如下错误:cc1: error: invalid option `abi=aapcs-Linux'root@ubuntu:/home/linux/linux-2.6.32.2# make zImagescripts/kconfig/conf -s arch/arm/Kconfig CHK include/linux/version.h Gene
2017-02-14 23:54:14 631
Makefile教程-经典
2018-05-09
天书夜读(反汇编).
2018-05-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人