上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 23 下一页

2013年9月24日

shell学习笔记之条件(二)

摘要: test或者[#检查文件是否存在if test -f read.cthen...fiif [ -f read.c ]then...fi#如果then和if在同一行上,就应该用;把if和then分开if [ -f read.c ];then...fi注意:1.if空格[空格xxx空格]都有空格2.test命令的退出码(表明条件是否满足),决定是否要执行后面的代码------------------------------------------------------------------------------字符串比较string1 == string2string1 != string2 阅读全文

posted @ 2013-09-24 18:16 屁屁侠 阅读(265) 评论(0) 推荐(0) 编辑

shell学习笔记之变量(一)

摘要: 一、普通变量1.使用变量之前通常并不需要事先声明,通常赋值的时候创建他们2.默认所有的变量都被看做字符串,并且以字符串存储3.变量区分大小写4.变量名前面添加$符号来访问变量,赋值的时候只需要使用变量名5.如果字符串中包含空格,就必须用引号括起来6.等号两边不能有空格#!/bin/shmyvar="Hi there"echo $myvarecho "$myvar"echo '$myvar' #不会发生替换echo \$myvar #不会发生替换echo Enter some textread myvarecho '$myvar&# 阅读全文

posted @ 2013-09-24 15:56 屁屁侠 阅读(426) 评论(0) 推荐(0) 编辑

内核线程、用户进程、用户线程

摘要: 内核线程、用户进程、用户线程从kernel创建init 进程之后,内核就不再主动占有cpu了。只有当进程主动要求和中断到来时,内核才动一动,很快又把cpu还给合适的进程。Linux上进程分3种,内核线程、用户进程、用户线程。内核线程内核线程拥有进程描述符、PID、进程正文段、核心堆栈;因为内核线程不访问用户空间,只操作内核空间内存,而所有内核线程的内核空间都是一样的。这样就省下了一个mm域的内存。用户进程拥有进程描述符、PID、进程正文段、核心堆栈 、用户空间的数据段和堆栈用户线程拥有进程描述符、PID、进程正文段、核心堆栈,同父进程共享用户空间的数据段和堆栈;用户线程也可以通过exec函数族 阅读全文

posted @ 2013-09-24 11:11 屁屁侠 阅读(278) 评论(0) 推荐(0) 编辑

2013年9月23日

字符设备驱动笔记——同步互斥阻塞(九)

摘要: 一、同步互斥阻塞1. 原子操作原子操作指的是在执行过程中不会被别的代码路径所中断的操作。常用原子操作函数举例:atomic_t v = ATOMIC_INIT(0); //定义原子变量v并初始化为0atomic_read(atomic_t *v); //返回原子变量的值void atomic_inc(atomic_t *v); //原子变量增加1void atomic_dec(atomic_t *v); //原子变量减少1int atomic_dec_and_test(atomic_t *v); //自减操作后测试其是否为0,为0则返回true,否则返回false。2. 信号量信号量(sema 阅读全文

posted @ 2013-09-23 19:01 屁屁侠 阅读(736) 评论(0) 推荐(0) 编辑

字符设备驱动笔记——异步通知(八)

摘要: 一、信号处理函数的要点:1.注册一个信号处理函数2.发信号,谁发3.发给谁4.怎么发#include #include void my_signal_fun(int signum){ static int cnt = 0; printf("signal = %d, %d times\n", signum, ++cnt);}int main(int argc, char **argv){ signal(SIGUSR1, my_signal_fun); while (1) { sleep(1000); } return 0;}二、执行... 阅读全文

posted @ 2013-09-23 17:09 屁屁侠 阅读(508) 评论(0) 推荐(1) 编辑

2013年9月22日

字符设备驱动笔记——poll机制分析(七)

摘要: poll机制分析所有的系统调用,基于都可以在它的名字前加上“sys_”前缀,这就是它在内核中对应的函数。比如系统调用open、read、write、poll,与之对应的内核函数为:sys_open、sys_read、sys_write、sys_poll。一、内核框架:对于系统调用poll或select,它们对应的内核函数都是sys_poll。分析sys_poll,即可理解poll机制。1. sys_poll函数位于fs/select.c文件中,代码如下:asmlinkage long sys_poll(struct pollfd __user *ufds, unsigned int nf... 阅读全文

posted @ 2013-09-22 15:53 屁屁侠 阅读(421) 评论(0) 推荐(1) 编辑

2013年9月21日

字符设备驱动笔记——中断方式按键驱动之代码(六)

摘要: //驱动程序#include #include #include #include #include #include #include #include #include #include #include static struct class *thirddrv_class;static struct class_device *thirddrv_class_dev;volatile unsigned long *gpfcon;volatile unsigned long *gpfdat;volatile unsigned long *gpgcon;volatile unsigne... 阅读全文

posted @ 2013-09-21 23:03 屁屁侠 阅读(460) 评论(0) 推荐(0) 编辑

字符设备驱动笔记——中断方式按键驱动之linux中断处理结构(五)

摘要: 一、单片机下的中断处理 1)分辨是哪一个中断 2)调用处理函数 3)清中断二、linux下的中断处理1)/arch/arm/kernel/irq.casmlinkage void __exception asm_do_IRQ(unsigned int irq, struct pt_regs *regs){ struct pt_regs *old_regs = set_irq_regs(regs); struct irq_desc *desc = irq_desc + irq; /* * Some hardware gives randomly wrong int... 阅读全文

posted @ 2013-09-21 13:11 屁屁侠 阅读(1299) 评论(0) 推荐(0) 编辑

2013年9月20日

字符设备驱动笔记——中断方式按键驱动之linux异常处理结构(四)

摘要: 1.中断方式获取按键值单片机:1)按键按下2)cup发生中断,跳转到异常向量入口执行3)b 函数 a.保存被中断的现场 b.执行中断处理函数 c.恢复linux:1)trap_init()函数构造异常向量2)vector_irq + stubs_offset 跳转,vector_irq用宏来实现 a.保存寄存器的值 b.asm_do_IRQ c.恢复2.linux异常处理结构分析---------------------------------------------trap_init()函数构造了异常向量把__vectors_start代码复制到vecto... 阅读全文

posted @ 2013-09-20 22:40 屁屁侠 阅读(854) 评论(0) 推荐(0) 编辑

字符设备驱动笔记——查询方式按键驱动(三)

摘要: second_drv.c#include #include #include #include #include #include #include #include #include #include static struct class *seconddrv_class;static struct class_device *seconddrv_class_dev;volatile unsigned long *gpfcon;volatile unsigned long *gpfdat;volatile unsigned long *gpgcon;volatile unsigned... 阅读全文

posted @ 2013-09-20 15:22 屁屁侠 阅读(469) 评论(0) 推荐(0) 编辑

上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 23 下一页

导航