- 博客(23)
- 资源 (3)
- 收藏
- 关注
原创 pthread_cleanup_push/pop成对出现的意义
首先简单介绍一下这两条API线程可以安排它退出时需要调用的函数,这样的函数称为线程清理处理程序,线程可以建立多个清理处理程序。处理程序记录在栈中,也就是说它们的执行顺序与它们注册时的顺序相反。 pthread_cleanup_push来注册清理函数rtn,这个函数有一个参数arg。在以下三种情形之一发生时,注册的清理函数被执行: 1)调用pthread_exit。
2014-03-22 21:41:48
2945
转载 关于子进程继承父进程信号特性
子进程会继承父进程的屏蔽信号和信号处理设置。下面总结一个表,我自己也学习下信号处理设置(Signal Disposition)屏蔽信号(Signal Mask)待处理信号(Pending Signal) fork execue pthread_createSignal Disposition
2013-04-01 14:42:49
2086
转载 Linux进程的实际用户ID和有效用户ID
本人对Unix下的进程的实际用户ID和有效用户ID一直都比较迷惑,没有完全搞清楚。最近温习APUE(《高级UNIX环境编程》),终于对这两个概念有了一个清晰的认识,看来经典著作绝对需要温习多遍,才能领略其中的奥秘。 在Unix进程中涉及多个用户ID和用户组ID,包括如下:1、实际用户ID和实际用户组ID:标识我是谁(据说这是一个变态的哲学问题,难死一片哲学家)。也就是登录用
2013-03-24 15:14:12
611
转载 ls -l 字段意思
ls -l(这个参数是字母L的小写,不是数字1) 这个命令可以使用长格式显示文件内容,如果需要察看更详细的文件资料,就要用到ls -l这个指令。例如我在某个目录下键入ls -l可能会显示如下信息(最上面两行是我自己加的): 位置1 2 3 4 5 6 7 顺序如下:读写权限: R 是读 W是写 X是可执行文件个数文件或目录的拥有者文件或目录所属组文件大小创建日期
2013-03-10 12:49:20
1759
转载 关于网关的理解
那么网关到底是什么呢?网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络
2013-03-05 15:08:22
1512
转载 Linux汇编---函数调用过程
或许习惯于用高级语言编程的大部分同学都会忽略了函数调用的具体过程是怎样的,如果想知道这个过程就不得不从汇编入手,但汇编语言又晦涩难懂。在这里谨以一个简单的例子说说我对函数调用过程的学习心得。 先上C语言写的代码: 1 #include 2 3 4 unsigned int test(int a,int b) 5 { 6 int c,d; 7
2013-03-05 12:42:03
822
原创 linux softirq和tasklet的关系
书本上tasklet就是基于softirq来实现的,下面的就从代码看看他们是怎么实现的。首先搞清楚softirq是怎么一回事,linux内核里面定义这几种softirq(可能内核版本不同,定义不同)enum{ HI_SOFTIRQ=0, TIMER_SOFTIRQ, NET_TX_SOFTIRQ, NET_RX_SOFTIRQ, SCSI_SOFTIRQ, TA
2012-12-06 10:48:34
1518
转载 【转载】网络协议学习方法和工具
1.学习方法(转自http://blog.chinaunix.net/u1/33167/showart_463501.html )上班了要在Linux做一些底层的网络处理,不得不从头来学Linux和网络,编程部分主要看Richard Stevens的那几本书:APUE、UNP、TCP/IP Illustraion等,学Linux则看得很杂,市面上各种Linux入门书大都翻了一遍,俺是习惯在书店
2012-11-16 19:31:28
1726
转载 利用Qt creator编写linux驱动
利用Qt creator编写linux驱动 最近在潜心研究linux驱动开发,个人在这几天驱动开发中的遇到的几个难点:开发工具不够智能 驱动代码庞大不知如何入手 硬件方面主要是电路方面知识欠缺 从这几个方面入手来解决开发linux驱动的难题。 在搜索引擎上我发现很多高手常用驱动的开发工具还是vi/vim,emacs。但是对于我用惯
2012-11-14 13:55:15
3066
1
转载 用 Qt Creator 开发非 Qt 的 C/C++ 程序
【珠海】 11月25日(周日下午)OSC 源创会我要报名»在Windows还是习惯用VS2005但是现在到了Linux下,开发起来C/C++程序就没有那么得心应手的IDE了。虽然很多人推荐E开头那个主要作为Java开发的IDE,不过安上插件后感觉不大好,一个是那个智能完成功能反应有点迟钝,对标准库的支持 不大好,另一个是编译起来还是麻烦,不能自动根据工程生成合适的makefile(
2012-11-14 13:52:58
1561
原创 快速排序
快速排序代码void quickSort(int *buffer,int l,int r){ int x = buffer[l]; int L = l; int R = r; if(L >= R) return; while(l { while(l x
2012-09-26 19:50:32
375
转载 堆与栈有什么区别?
栈 堆 区别详解2009-06-06 21:01堆与栈有什么区别?一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS
2012-07-29 14:03:07
489
原创 IPhone之drawRect清楚内容
一个很令人困惑的地方,要是在view里面没有设置背景颜色,要是多次调用drawRect就会出现很笔记重叠的现象,所以一定要设置backGroundColor
2012-07-25 12:42:40
923
原创 驱动调试之路之write
今晚写一个简单字符驱动,发现驱动里面的write函数竟然不能调用,而open,read函数都可以,纠结了一个晚上,一直以为驱动有问题。到最后发现是应用层的open函数里面的权限设置为只读,一开也怀疑应用层有问题,还想检测write函数的返回值,但是一想其实返回值也自己驱动返回的,现在的问题是驱动write函数不能调用,检查返回值根本用不上。平时一直都没有注册应用层的open权限,这次可以说拿够教训
2012-05-14 23:46:54
551
转载 Linux0.11中系统内存的使用
文件转:http://hi.baidu.com/qiqi7036/blog/item/971e1316bab8b94b21a4e9e6.html系统内存分为基本内存(1M)和扩展内存,总长度保存在全局变量memory_end中。1M以后的扩展内存大小(KB)是由setup.s程序在引导时间从BIOS中获取,并保存在内存0x90002位置的。memory_end的计算方法如下:#defi
2012-04-20 21:08:47
676
原创 s3c2440触摸屏程序架构
基本上所以的2440的触摸屏的驱动都有一个定时器,这是因为触摸屏有一个特性,在转换的模式下没有办法判断,笔尖的按下或抬起,所以一般都会在ADC中断处理函数里面先设置为等待模式,然后修改定时器的值,然后在定时器里判断笔尖的状态,再决定转进转换模式,还是等待模式。其实这里就是很简单的思想,就是当读完一个ADC的值后,然后等待笔尖提起,要是过一段时间笔尖还是没有提起,就开始转换,也就是交加进行。其实也可
2012-04-11 23:57:24
793
原创 linux input子系统的细节
网上很多教程都是分析linux输入子系统的架构,但是很少有文章介绍编写实际代码时应用注意什么。首先输入子系统支持/* * Event types */#define EV_SYN 0x00#define EV_KEY 0x01#define EV_REL 0x02#define EV_ABS 0x03#define EV_MSC 0x04#d
2012-04-10 15:25:12
724
原创 加载地址与运行地址
要是做过uboot开发,就是会遇到过运行地址与加载地址的概念,确实比较抽象与模糊,网上很多解释都是说运行地址就是加载地址,还有就是他们有很大的关系。其实他们根本一点关系都没有,但是很巧合他们很多时候都是相同的,加载地址:就是程序所被加载到RAM的地址,也就是程序在RAM或者norflash的地址,因为程序在硬盘或者nandflash中时不能运行,所以需要加载到RAM中,这个地址就是加载地址,比如s
2012-04-01 16:07:38
4653
转载 mount命令的使用
做DM9000网卡时时,发现挂载nfs以后,拷贝大文件经常出错,经过查找发现linux2.4.18内核的网络系统无法读取大于1024字节包的情况,因此造成大量丢包。解决方法为在nfs挂载时设置包的最大大小,命令如下:mount -t nfs -o nolock,rsize=1024,wsize=1024 192.168.0.10:/home /mnt/yaffs/home/
2012-03-27 17:09:39
2338
原创 Linux socket之connect不要想当然
首先问问自己客户端调用connect是在什么时候返回,肯定是在服务器accept后返回,因为TCP/IP协议是面向连接。自己得出来答案,然后再去问问身边的人,基本上都是这个答案。但是很可惜结果不是这样子,因为TCP/IP协议是经过三次握手的,要是服务器在listen,首先是客户端向通过connect向服务器发送request,然后服务器发送ACK,当客服端接受到ACK,connect就返回,这时候
2012-03-21 11:14:37
4579
原创 Linux socket断开连接的怪异
文档上面说recv函数通常是阻塞,除非文件描述符设置为非阻塞,但是今天我遇到很奇怪的现象就是recv函数返回值为0。仔细一看,原来是对方的socket已经关闭,利用这个特性可以很简单地知道对方是否关闭了socket。
2012-03-20 18:02:44
1603
原创 Linux socket accept尽信书不如无书
关于Linux socket 里面的 int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)函数,很多书籍都把第三个参数搞错,以为第三个参数用来用来返回addr的类型,所以传个指针进去,却是表面上很像。一般情况下addrlen所指向的地址要是没有初始化(不是addrlen没有初始化,就像socklen_t a;sock
2012-03-03 09:24:50
4709
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人