
Linux
文章平均质量分 52
chrovery
这个作者很懒,什么都没留下…
展开
-
Kmemleak Introduction
Kernel Memory Leak Detector===========================Introduction------------Kmemleak provides a way of detecting possible kernel memory leaks in away similar to a tracing garbage collector(h转载 2016-01-20 19:26:49 · 1341 阅读 · 0 评论 -
CMA Introduce
CMA(Contiguous Memory Allocator)是智能连续内存分配技术,是Linux Kernel内存管理系统的扩展,目的在于解决视频播放(特别对于4K视频)需要预留大量连续内存导致运行内存紧张的问题。1、 简介连续内存分配器(CMA - Contiguous Memory Allocator)是一个框架,允许建立一个平台无关的配置,用于连续内存的管理。然后,设备所需内转载 2015-12-31 17:58:08 · 639 阅读 · 0 评论 -
diff命令生成补丁
1、使用diff生成补丁;diff是Linux下的文件比较命令,参数这里就不说了,直接man一下就行了,不仅可以比较文件,也可以比较两个目录,并且可以将不同之处生成补丁文件,其实就是一种打补丁的命令。使用方法如下:diff -rNu a b > diff.patch转载 2015-11-13 10:34:55 · 822 阅读 · 0 评论 -
常用工具下载链接
串口终端工具ttermpro:http://external.informer.com/ttssh2.sourceforge.jp/原创 2015-09-18 14:32:55 · 1255 阅读 · 0 评论 -
fcntl使用及FD_CLOEXEC详解
fcntl使用说明转自 http://www.cppblog.com/mysileng/archive/2013/01/15/197279.aspx功能描述:根据文件描述词来操作文件的特性。#include #include int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); in转载 2015-09-18 14:00:29 · 4234 阅读 · 0 评论 -
Unix 與 MS-DOS 指令對照表
UnixMS-DOS 說 明 例 子 cdcd進入目錄cd ..mkdirmd開子目錄mkdir hellopwdcd顯示目前目錄pwdenvset顯示目前環境變數envsetenvset設定環境變數setenv pp pwd转载 2015-08-03 20:13:44 · 770 阅读 · 0 评论 -
常见内存分配算法及优缺点
常见内存分配算法及优缺点常见内存分配算法及优缺点如下: (1)首次适应算法。使用该算法进行内存分配时,从空闲分区链首开始查找,直至找到一个能满足其大小需求的空闲分区为止。然后再按照作业的大小,从该分区中划出一块内存分配给请求者,余下的空闲分区仍留在空闲分区链中。 该算法倾向于使用内存中低地址部分的空闲分区,在高地址部分的空闲分区非常少被利用,从而保留了高地址部分的大空闲区。显然转载 2015-07-21 17:16:28 · 1451 阅读 · 0 评论 -
如何将linux ko档copy至android
android_definintion.mak原创 2015-06-11 19:29:46 · 542 阅读 · 0 评论 -
VIM使用技巧 ctags taglist
先安装 ctags taglist下载目录 http://www.vim.org/scripts/script.php?script_id=273Ctags -R 生成ctags文件,文件中包含所有子目录中的代码tags如果需要查看函数列表,需要启动Taglist,在Vim的命令状态输入:TlistToggle ( 或Tlist ),在Vim界面的左面就会出现函转载 2015-06-10 20:08:27 · 460 阅读 · 0 评论 -
UltraEdit正则表达式
举例:如果需要将下面这条信息中的 :290:12: 替换为四个空格键,可以用如下正则表达式来处理:将osd_base_hw.c:290:12: error: cast from pointer to integer替换为osd_base_hw.c error: cast from pointer to integer正则表达式:.c:+[0-9a-z]原创 2015-06-08 15:55:02 · 337 阅读 · 0 评论 -
一张图看尽 Linux 内核运行原理
转载 2016-01-18 18:49:00 · 665 阅读 · 0 评论 -
Android getevent / sendevent的用法
Android 自带了 getevent 和 sendevent,分别用于获取设备报送的事件和模拟产生事件,前者用于辅助设备驱动的验证,后者用于模拟事件进行上层应用的验证。关于event设备的获取,在 /proc/bus/input/devices 下面:$ adb shell cat /proc/bus/input/devicesgetevent和sendevent用法:转载 2015-12-01 17:43:27 · 591 阅读 · 0 评论 -
Linux用户空间与内核空间
Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。Linux内核地址映射模型x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存。段转载 2016-01-04 16:22:35 · 421 阅读 · 0 评论 -
script/ shell脚本 callstack如何dump
将script加入到需要check的脚本中即可。例如需要check ins_all_mod.sh的callstack,将附档中script加入到其最后即可。# FILE : sctrace.sh# LICENSE : GPL v2.0 (only)# PURPOSE : print the recursive callers' list for a sc转载 2016-04-08 09:07:09 · 874 阅读 · 0 评论 -
insmod过程详解
转自 http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=27717694&id=3971861一、前言对于现在编译的一些module要insmod在系统上时,可能会报各种各样的错误。这些错误仔细研读内核源码,都能找出原因。2.6 内核以前的insmod部分主要依赖于modutils源码包,在用户层基本将工作完成,加载转载 2016-04-07 18:56:45 · 13903 阅读 · 1 评论 -
获取driver导出的所有symbol
echo 0 > /proc/sys/kernel/kptr_restrict // shell cmd; su权限 cat /proc/kallsyms | grep xxx // shell cmd, xxx is the symbol name, and we can find the detail address of xxx r 0xxxxx //原创 2016-04-07 17:11:45 · 385 阅读 · 0 评论 -
Device Tree(三):代码分析
Device Tree(三):代码分析作者:郭健 发布于:2014-6-6 16:03 分类:统一设备模型一、前言Device Tree总共有三篇,分别是:1、为何要引入Device Tree,这个机制是用来解决什么问题的?(请参考引入Device Tree的原因)2、Device Tree的基础概念(请参考DT基础概念)3、ARM linux中和D转载 2016-02-24 10:43:05 · 613 阅读 · 0 评论 -
Device Tree(二):基本概念
Device Tree(二):基本概念作者:郭健 发布于:2014-5-30 16:47 分类:统一设备模型一、前言一些背景知识(例如:为何要引入Device Tree,这个机制是用来解决什么问题的)请参考引入Device Tree的原因,本文主要是介绍Device Tree的基础概念。简单的说,如果要使用Device Tree,首先用户要了解自己的硬件配置和系统运转载 2016-02-24 10:38:18 · 478 阅读 · 0 评论 -
Device Tree(一):背景介绍
Device Tree(一):背景介绍作者:郭健 发布于:2014-5-22 16:46 分类:统一设备模型一、前言作为一个多年耕耘在linux 2.6.23内核的开发者,各个不同项目中各种不同周边外设驱动的开发以及各种琐碎的、扯皮的俗务占据了大部分的时间。当有机会下载3.14的内核并准备学习的时候,突然发现linux kernel对于我似乎变得非常的陌生了,各种新的机制,转载 2016-02-24 10:11:37 · 354 阅读 · 0 评论 -
kmalloc fail导致系统异常
如果在中断ISR中间有作memory alloc的动作,有可能会遇到如下的BUG log信息,分析如下:1 ISR中不能存在任何可调度的动作,如sleep等2 在ISR中申请memory时,最好尽量使用 kmalloc(xxx, GFP_ATOMIC), 而不要使用kmalloc(xxx, GFP_KERNEL), 因为GFP_KERNEL是可以被打断的,如果因memory not e原创 2016-03-29 15:11:22 · 2537 阅读 · 0 评论 -
addr2line objdump命令使用方法
在Linux下写C/C++程序的程序员,时常与Core Dump相见。在内存越界访问,收到不能处理的信号,除零等错误出现时,我们精心或不精心写就的程序就直接一命呜呼了,Core Dump是Linux仁慈地留下的程序的尸体,帮助程序员们解决了一个又一个问题。有时配置不给力,Linux直接毁尸灭迹,没有了Core文件;又有时,刚好磁盘空间不足,Core文件写不下了。没有Core文件的时候,如何知道转载 2015-08-27 20:47:45 · 7920 阅读 · 0 评论 -
vim 常用命令
基本命令:e filenameOpen filename for edition:wSave file:qExit Vim:q!Quit without saving:xWrite file (if changes has been made) and exit转载 2016-01-11 15:01:27 · 384 阅读 · 0 评论 -
system build folder Makefile & config
system build目录下的makefile会定义某些config item, .cfg文件里面,会根据这些config item,对某些变量作定义以公板为例:vm_linux\project_x\sys_build\mtk_linux\mt58XX_eu_linux目录下,有makefile mt58XX_eu_linux.cfg两个文件其中makefile用于定义某原创 2015-06-01 14:27:56 · 353 阅读 · 0 评论 -
Linux内核线程的建立
创建内核线程的函数:thread = kthread_create(taskq_thread, tqt, "%s/%d", name, i);wake_up_process(thread);其中taskq_thread为该内核函数需要做的事情。For Example: resume complete时usb driver会调用do_rebind_interface(原创 2015-06-03 18:03:10 · 373 阅读 · 0 评论 -
Kmemleak检测工具介绍
一、Kmemleak检测工具介绍Kmemleak工作于内核态,Kmemleak 提供了一种可选的内核泄漏检测,其方法类似于跟踪内存收集器。当独立的对象没有被释放时,其报告记录在 /sys/kernel/debug/kmemleak中,Kmemcheck能够帮助定位大多数内存错误的上下文。Kmemleak使用过程概述首先CONFIG_DEBUG_KMEMLEAK 在Kernel h转载 2015-05-28 13:32:07 · 1022 阅读 · 0 评论 -
Linux设备驱动模型学习之基础篇--Kobject.txt翻译
转自 http://blog.youkuaiyun.com/king_208/article/details/5273689 感谢!----------------------------------------------------------------------------------------------------------------------------------------转载 2015-01-19 16:31:44 · 380 阅读 · 0 评论 -
Linux 中文件权限管理
Linux系统将可设置权限的用户分成三类,分别是:文件主(User)、同组用户(Group)和其他用户(Other)。 Linux中普通文件的权限依赖于目录文件的权限,使用命令“ls –l”,可查看文件或目录文件的权限 命令列出的前十位中包含了文件类型和文件权限 -rwxr-x--- Linux提供的常见文件类型有: - 普通文件 d 目录文件 b转载 2014-12-24 09:58:03 · 456 阅读 · 0 评论 -
Linux内核module_param core_param的使用
1.定义模块参数的方法:module_param(name, type, perm);其中,name:表示参数的名字; type:表示参数的类型; perm:表示参数的访问权限; 2. 数组类型模块参数的定义:用逗号间隔的列表提供的值;声明一个数组参数:module_param_array(name, type, num, perm);其转载 2014-12-24 11:37:50 · 2885 阅读 · 0 评论 -
Cygwin下安装vim后,vim中退格键无法正常使用
在Cygwin中安装完vim后进入vim,发现上下左右键和退格键都无法正常使用 问题分析:首先考虑到的就是缺少vim的配置文件,首先查看/etc路径下是否有vim的配置文件[plain] view plaincopyadmin@ThinkPad /etc $ cd /etc admin@ThinkPad /et原创 2014-11-04 14:06:00 · 574 阅读 · 0 评论 -
Linux linux mb() / rmb() / wmb()
linux mb()/rmb()/wmb() 2010-08-23 16:45:49分类: LINUX在阅读linux 2.6.23内核代码中遇到mb()/rmb()/wmb() 这几个宏,不明白如何使用,在分析其汇编代码后,大概的了解了这和内存屏障有关,代码如下:#define X86_FEATURE_XMM2 (0*32+26)转载 2014-10-31 19:11:09 · 11830 阅读 · 0 评论 -
MTP in Android
目录[-]MTP in Android一 背景知识介绍1.1 MTP协议介绍1.2 OS对MTP的支持及认证二 Android中的MTP2.1 Android中MTP的代码架构2.2 MTP流程分析三 总结经作者同意,转发我们公司MTP专家同事huirong的一篇文章。大家也可在程序员第5期看到。MTP in And转载 2014-10-28 16:52:32 · 614 阅读 · 0 评论 -
应用程序的Makefile 文件
示例:// OBJS = list.oCC = gccCFLAGS = -Wall -O -glist : $(OBJS)$(CC) $(OBJS) -o listlist.o : list.c list.h$(CC) $(CFLAGS) -c list.c -o list.oclean:rm -rf *.o *.exe *.bin原创 2014-10-26 13:49:23 · 560 阅读 · 0 评论 -
用户空间使用linux内核链表list编程
在用户空间编程使用linux内核链表list,hlist宏定义和操作. linux内核中的list_head和hlist_head/hlist_node是将数据结构串起来成为链表的两个重要链表构造工具。利用他们和其对应的宏定义,可以非常容易地将数据构成链表,进行链表的各种操作,和数据查询。 在内核中,他们使用的十分广泛。这些链表操作宏定义具有通用性,和具体数据结构无关。 利转载 2014-10-26 12:17:48 · 2676 阅读 · 1 评论 -
copy_to_user 错误
函数原型:copy_to_user(),其在内核的原型是:unsigned long copy_to_user(void __user *to, const void *from, unsigned long n) { if (access_ok(VERIFY_WRITE, to, n)) n = __copy_to_user(to, from原创 2014-10-23 11:32:57 · 6462 阅读 · 0 评论 -
dump_stack的简单使用 [Kernel space]
刚刚接触内核,在调试过程中用printk打印信息当然是直接有效的办法,但当我们不知到一个函数或者一个模块到底在哪里出了问题时我们可以利用dump_stack有效的找到问题的根源,下面只是简单的给出了使用方法。 我在自己的主机上试了一下dump_stack() Makefile文件点击(此处)折叠或打开obj-m := hello.oKE转载 2014-10-24 17:32:52 · 1001 阅读 · 0 评论 -
Linux callstack 使用 [User space]
一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。int backtrace(void **buffer,int size) 该函数用于获取当前线程的转载 2014-12-30 16:57:06 · 1889 阅读 · 0 评论 -
module_init的加载和释放
Linux内核编程时需要包含Kernel头文件,大多的Linux驱动程序需要包含下面三个头文件:#include #include #include 其中,init.h 定义了驱动的初始化和退出相关的函数,kernel.h 定义了经常用到的函数原型及宏定义,module.h 定义了内核模块相关的函数、变量及宏。 几乎每个linux驱动都有个module_init(转载 2015-02-07 14:25:25 · 464 阅读 · 0 评论 -
Linux 文件系统:procfs, sysfs, debugfs 用法简介
Linux 文件系统:procfs, sysfs, debugfs 用法简介目录 [隐藏]1 前言2 debugfs3 procfs4 sysfs5 小结前言内核中有三个常用的伪文件系统:procfs,debugfs和sysfs。procfs — The proc filesystem is a pseudo-filesy转载 2015-05-27 21:27:29 · 920 阅读 · 0 评论 -
linux C 打印方法集锦
打印方法集锦:将当前函数名、line number打印出来 同时将打印字符设置为蓝色printk("\033[0;34m function and line [%s][%d] \033[0m\n",__FUNCTION__,__LINE__);打印当前时间printk("\033[0;34m Date and time is [%s][%s] \033[0m\n原创 2015-05-27 09:45:01 · 2169 阅读 · 0 评论 -
Int Long 区别 不同位宽编译器下各数据类型所占字节
转自 http://blog.sina.com.cn/s/blog_6f62c9510101svjz.html突然间就想到了long和int到底什么区别(发现有很多问题都是突然间想到的),然后百度、google各种查找,各种书籍:《C++ Primer》、《C程序设计语言》查看,终于明白了一些。下面的话选自《C程序设计语言》:short与long两个限定符的引入可转载 2015-05-14 14:41:08 · 3776 阅读 · 1 评论