自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 139

原创 fastboot时,出现“< waiting for any device >”的处理方法

fastboot的使用

2022-10-17 10:56:31 19407 1

原创 查看指定进程中所有线程的优先级等信息

实时优先级查看

2022-07-08 09:59:36 436

原创 E xx: xxxx:xx ERR thread 0x536753929472 setscheduler failed Operation not permitted

Android 线程优先级设定

2022-07-08 09:51:57 640 1

原创 linux环境链接文件查找命令

查找链接文件

2022-06-28 17:03:37 456

原创 使用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 1316

原创 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 1256

原创 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 2816

原创 内存泄漏检测工具

诊断用户态程序内存泄漏最流行的工具是Valgrind。对于内核,类似的工具是kmemleak。参考信息:http://linuxperf.com/?p=188https://blog.csdn.net/furongwei123/article/details/124126294

2022-04-12 16:19:14 219

原创 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 3097

原创 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 3004

原创 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 3051

原创 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 2983

原创 bootkpi

cat proc/driver/bootkpi

2022-03-10 15:47:30 271

原创 ... 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 1657

原创 利用/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 714

原创 限制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 618

转载 被SLC、MLC、TLC搞晕?一文了解所有闪存类型

通常情况下,固态硬盘(SSD)的底层NAND架构会因模型而异。NAND 闪存的每种类型——SLC、MLC、eMLC和TLC——都有不同的特性,并因此对您的数据存储产生不同的影响,在这篇文章中,我们会讨论这些差异。目前,闪存可以说彻底改变了企业数据存储,与机械硬盘(HDD)相比,SSD封装使存储子系统和阵列能够提供出色的应用性能,并能在业务分析和其他工作负载下快速工作。在个人电脑和移动设备中,闪存能够加速应用程序启动时间和加速数据传输。而且由于闪存没有可移动部件,所以SSD几乎不容易受到突然移动和物理冲击

2020-05-15 20:44:37 733

原创 内核编译准备之【build-essential包】

build-essential里面包括一些Linux下开发的必要工具。在Ubuntu12.04中,gcc是已安装好的,但是其还缺少常用的头文件和库文件,所以还需要安装build-essential这个包,可以在联网状态下使用如下命令来安装这个包。$ sudo apt-get install build-essential系统在安装build-essential时,会把程序文件放入以下几个目录...

2020-04-15 20:45:19 2485

原创 内核编译准备之【libssl-dev 库】

libssl-dev是OpenSSL通用库SSL也即Secure Socket Layer,是由网景公司为了传输敏感数据而提出的协议。SSL使用私钥加密传输的数据,防止被窃听。SSL最普遍的使用适合和浏览器结合使用,但是其他很多的应用也可以使用SSL。一般而言,使用了SSL的URL以https开头。OpenSSL是广泛使用的商业级SSL工具。...

2020-04-15 20:30:49 1137

原创 内核编译准备之【Ncurses 库】

GNU Ncurses 是一个允许用户编写基于文本的用户界面(TUI)的编程库。许多基于文本的游戏都是使用这个库创建的。比如 PacVim,这是一款学习 VIM 命令的 CLI 游戏。下面介绍如何在类 Unix 操作系统中安装 Ncurses 库。Ncurses 在大多数 Linux 发行版的默认仓库中都有。在基于 Arch 的系统上:sudo pacman -S ncurses...

2020-04-15 20:15:18 489

原创 指针

名字与内存位置之间的关联并不是硬件所提供的的,而是由编译器为我们实现的。硬件仍然通过地址访问内存位置。间接访问操作符只能用于指针类型表达式。所以,*100 = 25 这种用法是错误的,*(int *)100 = 25;是正确的用法。指针运算:指针 ± 整数 适用只想数组中某个元素的指针及适用malloc函数动态分配的内存指针 = 指针 只适用于两个指针都是指向同一个数组中的元素...

2020-04-12 18:49:02 101

原创 存储空间动态分配:malloc,calloc,realloc

1,malloc分配指定字节数的存储区,不初始化。2,calloc未指定数量指定长度的对象分配存储区,每一位都初始化为0。3,realloc增加或减少已分配区的长度,新增区域初始值不确定。特点:返回值都是通用指针void *,这个指针一定是适当对齐的,以便可以适用任何对象。...

2020-04-12 08:09:09 163

原创 进程终止: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 176

原创 编译内核错误: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 613

Makefile教程-经典

什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

2018-05-09

空空如也

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

TA关注的人

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