linux学习
Ernestxiao
http://www.chinaunix.net/index.php?uid=13995983&url=http://linux.chinaunix.net/bbs/viewthread.php?tid=1143453
个人说明
展开
-
浅析container_of(ptr, type, member)
浅析container_of(ptr, type, member)文章来源:http://gliethttp.cublog.cn#define container_of(ptr, type, member) ({ / const typeof( ((type *)0转载 2009-10-14 10:51:00 · 246 阅读 · 0 评论 -
wait
zieckey (http://zieckey.cublog.cn) wait(等待子进程中断或结束)表头文件 #include #include定义函数 pid_t wait (int * status);函数说明 wait()会暂时停止目前进程的执行,直到有信号来到或子进程结 束。如果在调用 wait()时子进程已经结束,则 wait()会立即返转载 2009-12-30 10:10:00 · 152 阅读 · 0 评论 -
Linux设备驱动编程之阻塞与非阻塞
阻塞操作是指,在执行设备操作时,若不能获得资源,则进程挂起直到满足可操作的条件再进行操作。非阻塞操作的进程在不能进行设备操作时,并不挂起。被挂起的进程进入sleep状态,被从调度器的运行队列移走,直到等待的条件被满足。 在Linux 关于上述例程,我们补充说一点,如果将驱动程序中的read函数改为:static ssize_t globalvar_read(struct f转载 2010-01-05 09:40:00 · 202 阅读 · 0 评论 -
input学习
在内核中,input_dev 表示一个 input设备;input_handler 来表示input设备的 interface。 所有的input_dev 用双向链表 input_dev_list 连起来 在调用 int input_register_device(struct input_dev *dev) 的时候,会将新的 input_dev 加入到这个链表中。 所有的i原创 2010-05-13 00:20:00 · 266 阅读 · 0 评论 -
移植 tslib 到Android 的注意事项
工作笔记——Tslib的编译和触摸屏测试1.编译前段时间非常的郁闷…因为在运行生成校准程序ts_calibrate时总是出现一个错误:ts_open:Inappropriate ioctol for device后来无数折腾后经过nanfansky指点才知道是自己板子的触摸屏驱动不支持ioctl操作原创 2010-05-24 23:10:00 · 2261 阅读 · 3 评论 -
errno
<br />0: Success<br />1: Operation not permitted<br />2: No such file or directory<br />3: No such process<br />4: Interrupted system call<br />5: Input/output error<br />6: No such device or address<br />7: Argument list too long<br />8: Exec format error转载 2010-06-03 23:34:00 · 383 阅读 · 0 评论 -
DM365的UBL源码分析
<br /><br /> <br /> <br /> <br />DM365是的启动方式有两种,通过BOOTSEL[2:0]引脚决定。当其为001时,直接从AEMIF上启动,比如NOR和OneNAND。除此之外皆是从RBL启动,顺序为RBL-UBL-UBOOT-KERNEL,比如NAND,串口,SD卡等。RBL会搜寻block1到block24去找 UBL,关于RBL启动的详细细节可以参考用户指南关于ARM子系统的那篇文档,很详尽,下面只分析UBL的源码。 <br /> <br /> UBL源码在原创 2010-06-07 22:59:00 · 1387 阅读 · 0 评论 -
DM365的Montavista
DM365的Montavista内核编译 总结了一下,DM365的Montavista内核编译步骤如下:1,以普通用户身份登录到NFS主机。2,设置PATH到Montavista工具链,交叉编译器(arm_v5t_le_gcc)才能够找到。一般在Shell资源文件 (如:home/user/.bashrc)中增加一个如下的定义,通常用export命令,在路径定义中不能有空格和回车。下面的命令是在文本中编辑 export命令行。host $ gedit /home/原创 2010-06-07 22:35:00 · 1023 阅读 · 0 评论 -
完整的DM365软件环境搭建步骤
完整的DM365软件环境搭建步骤<br /> <br />1、安装ubuntu<br />安装大概10 分钟会自动检查站点,看个人网速,之后会出现下载语言包(如果选择汉语),点跳过就行了。同步时间也可以跳过。再过几分钟就安装完了。<br />2、安装 vmtools<br />最好先把光碟弹出,右键unmount,点install vmtools,安装完重启。<br />3、安装 samba<br />一、安装 samba<br />sudo apt-get install samba<br />sudo原创 2010-06-07 22:56:00 · 915 阅读 · 0 评论 -
Linux 共享库编程
<br /><br /> <br /> <br /> <br /> <br />1、介绍<br />动态库是程序设计常用的技术,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理。在Windows和Linux操作系统中都有动态库的概念。Windows将其称为动态链接库(Dynamic Link Library,DLL),其文件扩展名为.dll,Linux称其为共享库技术(Shared Library),相应的共享库文件扩展名为.so。<br />故名思义,动态库在程序运转载 2010-06-07 22:59:00 · 368 阅读 · 0 评论 -
shell_find_share_lib
#!/bim/shfunction add_dep_lib(){ local TARGET=$1 local LIB_SEARCH_DIRS=$2 local LIB_DIR=$3 local USR_LIB_SEARCH_DIRS=$4 local USR_LIB_DIR=$5 local libs=`arm-none-linux-readelf -a ${TARGET} |grep "shard library" |awk / '{print原创 2010-06-07 23:00:00 · 184 阅读 · 1 评论 -
printk 使用方法 收藏
内核通过 printk() 输出的信息具有日志级别,日志级别是通过在 printk() 输出的字符串前加一个带尖括号的整数来控制的,如 printk("Hello, world!/n");。内核中共提供了八种不同的日志级别,在 linux/kernel.h 中有相应的宏对应。#define KERN_EMERG "" /* system is unusable */#define原创 2020-04-11 10:32:06 · 428 阅读 · 0 评论 -
linux内核延时
1、#include void do_gettimeofday(struct timeval *tv){ unsigned long flags; unsigned long usec, sec; read_lock_irqsave(&xtime_lock, flags); sec转载 2009-11-30 15:20:00 · 2467 阅读 · 0 评论 -
linux驱动 自旋锁的运用
linux驱动 自旋锁的运用 //hello.c#define __NO_VERSION__ #include #include #include #include #include #include #include #include #include #include #include #inc转载 2009-11-26 17:29:00 · 696 阅读 · 0 评论 -
Spinlock 简介
在 Linux Kernel 里有著许多重要的资料结构,这些资料在操作系统的运作中扮演著举足轻重的角色。然而,Linux 是个多工的操作系统,也就是在同一时间里可以同时有许多的行程在执行,所以,很有可能某个行程在依序读取 inode list,同时却又有另一个在 inode list 里加入新的 inode,这会造成什么情形呢?这会造成 inode list 的不稳定。所以,在 Kernel 里,转载 2009-10-19 11:07:00 · 192 阅读 · 0 评论 -
linux下多进程、多线程编程
linux下进程 (一) 理解Linux下进程的结构 Linux下一个进程在内存里有三部份的数据,就是“数据段”,“堆栈段”和“代码段”,其实学过汇编语言的人一定知道,一般的CPU象I386,都有上述三种段寄存器,以方便操作系统的运行。“代码段”,顾名思义,就是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程转载 2009-10-21 12:26:00 · 807 阅读 · 0 评论 -
Vim多行缩进技巧
1.按v进入visual状态,选择多行,用>或2.通常根据语言特征使用自动缩进排版:在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format。使用gg=G可对整篇代码进行排版。 3.gg shift+G 首尾4.全文字眼替换 %s/sourc原创 2009-10-21 16:14:00 · 16137 阅读 · 0 评论 -
Linux内核中用于同步的几种机制集中起来分析
Linux内核中用于同步的几种机制集中起来分析,强调了它们之间在实现和使用上的不同。 同步通常是为了达到多线程协同的目的而设计的一种机制,通常包含异步信号机制和互斥机制作为其实现的底层。在Linux 2.4内核中也有相应的技术实现,包括信号量、自旋锁、原子操作和等待队列,其中原子操作和等待队列又是实现信号量的底层。 一. 等待队列和异步信号 wait queue很早就作为一个基本的功转载 2009-10-20 17:14:00 · 322 阅读 · 0 评论 -
The Linux Kernel Module Programming Guide笔记
1、通过lsmod来获得内核已加载了那些模块,这个命令是读取/proc/modules文件的内容来获得信息的。 2、内核模块管理守护进程kmod执行modprobe去加载内核模块。modprobe的功能和insmod类似,但是它除了装入指定模块外,还同时装入指定模块所依赖的其他模块。 3、如果内核中打开了CONFIG_MODVERSIONS选项,则为某个指定版本内核编译的模块将不能转载 2009-10-23 15:43:00 · 415 阅读 · 0 评论 -
pthread_cond_wait().
今天终于有点明白了,赶快记下心得! 条件变量的结构为pthread_cond_t,函数pthread_cond_init()被用来初始化一个条件变量。它的原型为: extern int pthread_cond_init __P ((pthread_cond_t *__cond,__const pthread_condattr_t *__cond_attr)); 其中c转载 2009-10-26 15:02:00 · 3588 阅读 · 3 评论 -
linux线程(转)
程相关函数: pthread_attr_init() pthread_attr_setschedpolicy() pthread_attr_setschedparam() pthread_attr_destroy()具体应用demo:pthread_attr_init(&attr);pthread_attr_setschedpolicy(&attr, SC转载 2009-10-27 15:13:00 · 1489 阅读 · 0 评论 -
Linux设备驱动程序学习
Linux Device Driver学习笔记(转载) 前言: 接触ARM-Linux已经有9个多月了,经历了毕业设计和公司的练习设计,对ARM-Linux有了一定的了解,也让我爱上了ARM-Linux,决心以后从事Linux的工作。 8月份开始,我算是从头认认真真,一步一个脚印地学习ARM-Linux。先后对博创UP-N转载 2009-11-04 09:15:00 · 279 阅读 · 0 评论 -
linux内核中最常见的锁是自旋锁
linux内核中最常见的锁是自旋锁(spin lock)。自旋锁最多只能被一个可执行线程持有。如果一个执行线程试图获得一个被争用的自旋锁,那么该线程就会一直进行忙循环等待锁重新可用。要是锁未被争用,请求锁的执行线程便能立刻得到它,继续执行。在任意时间,自旋锁都可以防止多于一个的执行线程同时进入临界区。 一个被正用的自旋锁使得请求它的线程在等待锁重新可用时自旋(特别浪费处理器时间),转载 2009-11-06 16:18:00 · 474 阅读 · 0 评论 -
内核进程调度以及定时器实现机制2008-06-01
一、2.6版以前内核进程调度机制简介 Linux的进程管理由进程控制块、进程调度、中断处理、任务队列、定时器、bottom half队列、系统调用、进程通信等等部分组成。进程调用分为实时进程调度和非实时进程调度两种。前者调度时,可以采用基于动态优先级的轮转法(RR),也可以采用先进现出算法(FIFO)。后者调度时,一律采用基于动态优先级的轮转法。某个进程采用何种调度算法由改进程的进程控制块中的某些转载 2009-11-07 10:34:00 · 199 阅读 · 0 评论 -
android 动态库死机调试方法
android 动态库死机调试方法这两种方法都不是我发明了,都是网上一些高手公共出来的调试方法,无奈找不到出处的地方了,所以就在此总结一下,以方便android下的调试:简要说明:android系统中调试Java非常容易,一般遇到错误都在logcat中打印出错时函数的调用关系,而C库中出错时只看到一些二进制信息,使用gdbserver调试环境搭建又比较复杂。转载 2012-05-22 16:19:16 · 294 阅读 · 0 评论