随笔分类 -  Linux Programming

摘要:http://blog.chinaunix.net/uid-24774106-id-4061386.html信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。信号机制是进程之间相互传递消息的一种方法,... 阅读全文
posted @ 2014-05-14 12:21 左手牛奶,右手面包 阅读(443) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/21cnbao/article/details/7309757在我们使用ARM等嵌入式Linux系统的时候,一个头疼的问题是GPU,Camera,HDMI等都需要预留大量连续内存,这部分内存平时不用, 但是一般的做法又必须先预留着。目前,Marek Szyp... 阅读全文
posted @ 2014-05-08 10:17 左手牛奶,右手面包 阅读(1439) 评论(0) 推荐(0)
摘要:【转】http://blog.chinaunix.net/uid-20788636-id-1841334.htmlhttp://blog.chinaunix.net/uid-20788636-id-1841335.htmlLinux内核的三种调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃 3,SCHED_RR实时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平Linux线程优... 阅读全文
posted @ 2014-01-08 10:50 左手牛奶,右手面包 阅读(17550) 评论(0) 推荐(0)
摘要:http://www.ibm.com/developerworks/cn/linux/l-cn-ulimit/https://my.vertica.com/docs/5.0/HTML/Master/16468.htmulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 20file size (blocks, -f) unlimitedpending signals (-i) 16382max locked memory (kbytes, -l) 64 阅读全文
posted @ 2013-12-31 11:03 左手牛奶,右手面包 阅读(1088) 评论(0) 推荐(0)
摘要:1.SoC Linux底层驱动的组成和现状为了让Linux在一个全新的ARM SoC上运行,需要提供大量的底层支撑,如定时器节拍、中断控制器、SMP启动、CPU hotplug以及底层的GPIO、clock、pinctrl和DMA硬件的封装等。定时器节拍、中断控制器、SMP启动和CPU hotplug这几部分相对来说没有像早期GPIO、clock、pinctrl和DMA的实现那么杂乱,基本上有个固定的套路。定时器节拍为Linux基于时间片的调度机制以及内核和用户空间的定时器提供支撑,中断控制器的驱动则使得Linux内核的工程师可以直接调用local_irq_disable()、disable_ 阅读全文
posted @ 2013-09-17 10:29 左手牛奶,右手面包 阅读(1682) 评论(0) 推荐(0)
摘要:在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域:1.bit31~bit30 2位为 “区别读写” 区,作用是区分是读取命令还是写入命令。-----> _IOC_DIR : 获取读写属性域值 (bit30 ~ bit31)2.bit29~bit16 14位为 "数据大小" 区,表示 ioctl() 中的 arg 变量传送的内存大小。-----> _IOC_SIZE : 读取数据大小域值 (bit16 ~ bit 阅读全文
posted @ 2013-09-16 10:49 左手牛奶,右手面包 阅读(777) 评论(0) 推荐(0)
摘要:[转] Linux 3.10 ARM Device Tree 的初始化 本文代码均来自标准 linux kernel 3.10,可以到这里下载https://www.kernel.org/ 以arch/arm/mach-msm/board-dt-8960.c 为例,在该文件中的msm_dt_init 函数的作用就是利用 dt(device tree)结构初始化 platform device。 static void __init msm_dt_init(void) { of_platform_populate(NULL, of_default_bus_match... 阅读全文
posted @ 2013-09-10 18:09 左手牛奶,右手面包 阅读(1255) 评论(0) 推荐(0)
摘要:交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别自己之前一直没搞清楚这两个交叉编译器到底有什么问题,特意google一番,总结如下,希望能帮到道上和我有同样困惑的兄弟…..一. 什么是ABI和EABI1) ABI: 二进制应用程序接口(Application Binary Interface (ABI) for the ARM Architecture)在计算机中,应用二进制接口描述了应用程序(或者其他类型)和操作系统之间或其他应用程序的低级接口.ABI涵盖了各种细节,如:数据类型的大小、布局和对齐;调用约定(控制着函数的参数如何传送以及如何接 阅读全文
posted @ 2013-09-06 19:46 左手牛奶,右手面包 阅读(52257) 评论(4) 推荐(4)
摘要:C和C++ 编译器是集成的.他们都要用四个步骤中的一个或多个处理输入文件: 预处理 (preprocessing),编译(compilation),汇编(assembly)和连接(linking).源文件后缀名标识源文件的 语言,但是对编译器来说,后缀名控制着缺省设定: gcc 认为预处理后的文件(.i)是C文件,并且设定C形式的连接. g++ 认为预处理后的文件(.i)是C++ 文件,并且设定C++ 形式的连接. 源文件后缀名指出语言种类以及后期的操作: .c C源程序;预处理,编译,汇编.C C++源程序;预处理,编译,汇编.cc C++ 源程序;预处理,编译,汇编.cxx C++源程序; 阅读全文
posted @ 2013-09-04 12:34 左手牛奶,右手面包 阅读(3632) 评论(0) 推荐(1)
摘要:makefile下$(wildcard $^),$^,$@,$?,$ $@当执行此规则的命令时,自动环变量“$*”被展开为“茎” 在这里就是。“big” “little”和。静态模式规则对一个较大工程的管理非常有用。它可以对整个工程的同一类文件的重建规则进行一次定义,而实现对整个工程中此类文件指定相同的重建规则。比如,可以用来描述整个工程中所有的.o 文件的依赖规则和编译命令。通常的做法是将生成同一类目标的模式定义在一个 make.rules 的文件中。在工程各个模块的 Makefile 中包含此文件。 阅读全文
posted @ 2013-09-04 11:24 左手牛奶,右手面包 阅读(2998) 评论(0) 推荐(0)
摘要:gcc和g++都是GNU(组织)的一个编译器。误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请注意:1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。2.编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用g++似的。误区二:gcc不会定义__cplus 阅读全文
posted @ 2013-09-04 11:07 左手牛奶,右手面包 阅读(331) 评论(0) 推荐(0)
摘要:一. 动态链接库的原理及使用Linux提供4个库函数、一个头文件dlfcn.h以及两个共享库(静态库libdl.a和动态库libdl.so)支持动态链接。Ø dlopen:打开动态共享目标文件并将其映射到内存中,返回其首地址Ø dlsym:返回锁请求的入口点的指针Ø dlerror:返回NULL或者指向描述最近错误的字符串Ø dlclose:关闭动态共享文件函数dlopen需要在文件系统中查找目标文件并为之创建句柄。有四种方法指定目标文件的位置:Ø 绝对路径Ø 在环境变量LD_LIBRARY_PATH指定的目录中Ø 在/et 阅读全文
posted @ 2013-09-04 10:47 左手牛奶,右手面包 阅读(2692) 评论(0) 推荐(0)
摘要:Copy:http://graybull.is-programmer.com/posts/37758.html本文给出万能Makefile的具体实现,以及对其中的关键点进行解析。所谓C++万能Makefile,即可编译链接所有的C++程序,而只需作很少的修改。号称万能Makefile,一统江湖。我对原版的Makefile做了些修改。首先揭开它的庐山真面目:##################################################### Generic makefile - 万能Makefile# for compiling and linking C++ projec 阅读全文
posted @ 2013-09-03 17:30 左手牛奶,右手面包 阅读(530) 评论(0) 推荐(0)
摘要:1. ARM Device Tree起源http://blog.csdn.net/21cnbao/article/details/8457546Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码,相当多数的代码只是在描述板级细节,而这些板级细节对于内核来讲,不过是垃圾, 阅读全文
posted @ 2013-08-28 18:00 左手牛奶,右手面包 阅读(671) 评论(0) 推荐(0)
摘要:kernel build:顶层Makefile:-->1. include build/main.mk -->2. include build/kernel.mk kernel/arch/arm/configs/prima2cb_defconfig CONFIG_GPS_SIRFSOC=m CONFIG_TRIG_SIRFSOC=m -->3. vi kernel/driver/char/Makefile obj-$(CONFIG_GPS_SIRFSOC) += sirfsoc_gps.o obj-$(CONFIG_TRIG_SIRFSOC) += sirfsoc_trig. 阅读全文
posted @ 2013-08-19 17:36 左手牛奶,右手面包 阅读(680) 评论(0) 推荐(0)
摘要:awk语法 awk [options] 'commands' filesoption-F 定义字段分隔符,默认的分隔符是连续的空格或制表符 使用option中的-F参数定义间隔符号 用$1,$2,$3等的顺序表示files中每行以间隔符号分隔的各列不同域 NF变量表示当前记录的字段数-v 定义变量并赋值 也可以借用次方式从shell变量中引入command读前处理 行处理 读后处理1.读前处理 BEGIN{awk_cmd1;awk_cmd2}2.行处理:定址 命令 定址方法: 正则,变量,比较和关系运算正则需要用//包围起来 ^行首 $行尾 .除了换行符以外的任意单个字符 *前 阅读全文
posted @ 2013-07-24 14:26 左手牛奶,右手面包 阅读(1023) 评论(0) 推荐(0)
摘要:转载:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.htmlsed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法sed命令行格式为:sed [-nefri] ‘command’ 输入文本常用选项:-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e∶直接在指令列模式上进 阅读全文
posted @ 2013-07-24 13:43 左手牛奶,右手面包 阅读(388) 评论(0) 推荐(0)
摘要:http://dadekey.blog.51cto.com/107327/119938/# touch variable# vi variable脚本内容如下:#!/bin/shecho "number:$#"echo "scname:$0"echo "first :$1"echo "second:$2"echo "argume:$@"echo "show parm list:$*"echo "show process id:$$"echo "s 阅读全文
posted @ 2013-07-17 10:41 左手牛奶,右手面包 阅读(292) 评论(0) 推荐(0)
摘要:一 completion完成量completion是一种轻量级的机制,它允许一个线程告诉另一个线程工作已经完成。可以利用下面的宏静态创建completion:DECLARE_COMPLETION(my_completion);如果运行时创建completion,则必须采用以下方法动态创建和初始化:CODE:struct compltion my_completion;init_completion(&my_completion);completion的相关定义包含在kernel/include/linux/completion.h中:struct completion {unsigne 阅读全文
posted @ 2012-12-06 14:58 左手牛奶,右手面包 阅读(233) 评论(0) 推荐(0)
摘要:一、数据成员termios 函数族提供了一个常规的终端接口,用于控制非同步通信端口。 这个结构包含了至少下列成员: tcflag_t c_iflag; /* 输入模式 */tcflag_t c_oflag; /* 输出模式 */tcflag_t c_cflag; /* 控制模式 */tcflag_t c_lflag; /* 本地模式 */cc_t c_cc[NCCS]; /* 控制字符 */struct termios{unsigned short c_iflag; /* 输入模式标志*/unsigned short c_oflag; /* 输出模式标志*/unsigned short c_c 阅读全文
posted @ 2011-08-06 15:46 左手牛奶,右手面包 阅读(1428) 评论(0) 推荐(0)