- 博客(63)
- 资源 (3)
- 收藏
- 关注
原创 insmod: can't insert 'hci_uart.ko': invalid parameter
[root@Linux sbin]#insmod hci_uart.ko insmod: can't insert 'hci_uart.ko': invalid parameter先用dmesg查看信息,有可能已经装好了。[root@Linux sbin]#dmesgOnAction_backOnAction_back, action=0issue_acti
2013-01-26 09:20:29
6364
原创 linux命令之sync
sync是一个linux同步命令,含义为迫使缓冲块数据立即写盘并更新超级块。其中包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。[wang@localhost usb]$ man syncNAME sync - flush file system buffersSYNOPSIS sync [OPTION]
2013-01-25 13:22:42
31774
1
原创 用md5算法检测文件的完整性
MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5全称是报文摘要算法(Message-Digest Algorithm5)此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性是非常非常之小的。在linux或Unix上,md5sum是用来计算和校验文件报文摘要的工
2013-01-25 11:32:36
3192
原创 bluez 扫盲篇
bluez是linux官方蓝牙协议栈。组成bluez分为两个部分:内核代码和用户态程序及工具集内核代码:bluez核心协议和驱动程序等模块组成用户态程序及工具集:应用程序接口和bluez工具集独立模块:linux内核蓝牙子系统核心L2CAP 和 SCO 音频内核层RFCOMM, BNEP, CMTP 和 HIDP内核实现HCI UART, USB
2013-01-24 17:58:09
6034
原创 linux中断控制之工作队列
工作队列是将工作推后执行的一种机制,并且可以睡眠。工作队列结构定义于#include 内核3.1.4 源码位于kernel/workqueue.c先看工作队列结构struct work_struct {atomic_long_t data;struct list_head entry;work_func_t func;#ifdef CONFIG_LOCKDEP
2013-01-24 14:10:33
2486
原创 linux中断控制之tasklet
定义tasklet定义于#include 内核3.1.4先看看tasklet的结构体struct tasklet_struct{struct tasklet_struct *next; //指向链表的下一个结构unsigned long state; //任务状态atomic_t count; //计数void (*func)(uns
2013-01-24 11:14:30
762
原创 linux中断控制之软中断
软中断给系统中对时间要求最严格的下半部使用,执行频率很高,连续性很高,网络和SCSI直接使用软中断。此外,内核定时器和tasklet都是建立在软中断上的。软中断由softirq_action结构表示,定义于#include 内核3.1.4struct softirq_action{void (*action)(struct softirq_action *);
2013-01-23 20:10:53
1102
原创 linux中断控制之总章
程序运行期间,遇到某些特殊情况,需要CPU暂停当前正在执行的程序,转去处理突发事件,处理完后又返回原程序被中断的位置继续运行,这种情况就是中断。中断源:引起中断的原因或发出中断请求的设备中断服务程序:要处理的突发事件程序中断的分类:1.来源 硬中断(外部中断):通过外部设备接口,向CPU的中断请求引脚INT和NMI发中断请求产生 软中断(内部中断):
2013-01-23 17:22:24
978
原创 交叉编译obexd
编译obexd下载obexd-0.40 http://www.kernel.org/pub/linux/bluetooth/解压并进去[root@localhost obexd-0.40]# CC=arm-linux-gcc ./configure CFLAGS=-I/usr/local/newbt/include LDFLAGS=-L/usr/local/newbt/lib --pr
2013-01-23 13:22:17
4323
原创 交叉编译bluez-4.95
编译环境:fedora 11 编译工具 arm-linux-gcc 4.1.1 编译bluez——第一次从 http://www.kernel.org/pub/linux/bluetooth/ 下载bluez-4.95tar zxvf bluez-4.95.tar.gz [root@localhost bluez-4.95]# cd bluez-4.95
2013-01-23 13:20:38
7146
原创 configure -h 参数详解
以编译bluez中的configure为模版,并补充了些选项Usage: ./configure [OPTION]... [VAR=VALUE]...To assign environment variables 指定环境变量(e.g., CC, CFLAGS...), specify them asVAR=VALUE. See below for descrip
2013-01-22 14:45:00
11059
原创 configure配置调试
configure的作用1.自动进行对目标新系统的猜测过程现在许多开放源代码的程序都会附带有 configure 脚本。在过去,程序会附带一个 Makefile 文件,这个文件中有 6 个不同的编译标记和选项,但只会用到一个,其余全部注释掉,并且会有一个注解,告诉你“为您的系统选择合适的标记”。如果配置选项更复杂,可能还会有一个名为 config.h 的长长的 C 头文件,其中包含一些要设
2013-01-22 11:19:10
3961
原创 linux并发控制之互斥体
互斥体提供了两种机制:经典互斥体和实时互斥体分别定义于#include #include经典互斥体结构体: (会导致无限制优先级反转问题)struct mutex {/* 1: unlocked, 0: locked, negative: locked, possible waiters */atomic_t count;spinlock_twait_
2013-01-21 17:41:49
1715
原创 linux并发控制之完成量
完成量:表示一个执行单元需要等待另一个执行单元完成某事后方可执行。1.它是一种轻量级机制,为了完成进程间的同步而设计2.使用完成量等待时,调用进程是以独占睡眠方式进行等待的3.不是忙等待理解:定义于#include其结构体为struct completion {unsigned int done;wait_queue_head_t wait;};
2013-01-21 17:20:34
3391
原创 linux并发控制之读写信号量
读写信号量与信号量之间的关系类似于自旋锁与读写自旋锁。读写信号量可能会引起进程阻塞,但是它允许N个读执行单元同时访问共享资源,而最多只允许有一个写执行单元访问共享资源;因此,读写信号量是一种相对放宽条件的、粒度稍大于信号量的互斥机制。注意:信号量不允许任何操作之间有并发。理解:定义于#include 实际上在arch/X86/include/asm/rwsem.h
2013-01-21 16:44:09
1488
原创 linux并发控制之信号量
信号量(semaphore)是用于保护临界区的一种常用方法,它的使用方式与自旋锁类似与自旋锁相同的是,只有得到信号量的进程才能执行临界区的代码与自旋锁不同的是,当获取不到信号量的时候,进程不会在原地打转,而是进入休眠等待状态;理解:定义于#includestruct semaphore {spinlock_tlock;unsigned intcoun
2013-01-21 15:50:00
3354
原创 linux并发控制之RCU
RCU:读-拷贝-更新众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步机制,在UNIX系统和Linux系统中得到了广泛的使用,但是它存在两个问题。1.它的开销相对于CPU速度而言就越来越大随着计算机硬件的快速发展,获得这种锁的开销相对于CPU的速度在成倍地增加,原因很简单,CPU的速度与访问
2013-01-21 13:50:14
3767
原创 linux并发控制之顺序锁
顺序锁是对读写锁的一种优化。 1.读执行单元绝对不会被写执行单元阻塞。即读执行单元可以在写执行单元对被顺序锁保护的共享资源进行写操作的同时仍然可以继续读,而不必等待写执行单元完成之后再去读,同样,写执行单元也不必等待所有的读执行单元读完之后才去进行写操作 2.写执行单元与写执行单元之间仍然是互斥的。 3.如果读执行单元在读操作期间,写执行单元已经发生了写操作,那么,读
2013-01-21 10:16:35
5229
原创 linux并发控制之读写自旋锁
读写自旋锁(rwlock)是一种比自旋锁粒度更小的自旋锁机制,它保留了“自旋”的概念。但是在写操作方面,只能最多有一个写进程,在读方面,同时可拥有多个执行单元,当然读和写也不能同时进行。一句话:防写不防读 理解推荐: http://blog.sina.com.cn/s/blog_6d7fa49b01014q86.html操作:定义于#include或#include
2013-01-18 17:34:03
2586
原创 linux并发控制之自旋锁
自旋锁是一种对临界资源进行互斥访问的典型手段,其名来源于它的工作方式。通俗的讲,自旋锁就是一个变量,该变量把一个临界区标记为“我当前在运行,请等待”或者标记为“我当前不在运行,可以被使用”, 如果A执行单元首先获得锁,那么当B进入同一个例程时将获知自旋锁已被持有,需等待A释放后才能进入,所以B只好原地打转(自旋)。特点: 1.自旋锁主要针对SMP或单CPU且内核可抢占的情
2013-01-18 16:26:20
1428
原创 linux并发控制之原子操作
原子操作指的是在执行过程中不会被别的代码路径所中断的操作。分为两类:整型原子操作 和 位原子操作。特点:1.任何情况下操作都是原子的。2.都依赖底层的CPU的原子操作来实现,所以和CPU架构密切相关。注意: 1.原子操作在不同体系架构实现的方法不同,基本采用汇编实现 2.上述的整数原子函数集仅针对32位,内核中关于64位有另一套函数 3
2013-01-18 15:03:09
7073
原创 linux并发控制之中断屏蔽
在单CPU范围内避免竞态的一个简单方法。注意: 中断对系统正常运行很重要,长时间屏蔽很危险,所以中断屏蔽后应尽可能快的执行完毕。 宜与自旋锁联合使用。使用 local_irq_disable() local_irq_enable()只能禁止和使能本地CPU的中断,所以不能解决多CPU引发的竞态 local_i
2013-01-18 13:43:19
2520
原创 linux并发控制之总章
一.概念1.并发(concurrency)指多个执行单元同时,并行被执行。2.并发的执行单元对共享资源,(比如说,硬件资源,全局变量,静态变量等)访问很容易导致竞态(race conditions)。举个简单事例,古代皇帝有很多妃子,皇帝第一个时辰是宜妃的,第二个时辰是萱妃,最后时间是皇后的,这是原来正常的顺序。假如宜妃让皇帝赖床了,萱妃不爽了,然后萱妃时间冲突了,皇后也不爽了,竞争就
2013-01-18 12:59:25
851
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅