自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wangpengqi的专栏

希望我的博客可以给你带来财富

  • 博客(51)
  • 资源 (3)
  • 收藏
  • 关注

转载 Linux下pthread的读写锁的优先级问题

有这么一个情况:有一个C实现的HashMap,需要在多个线程之间共享。对它的读操作远远大于写操作。所以采用了pthread的读写锁来保障并发读写时的一致性。现在测试发现的问题是:因为读操作太多,导致写操作一直拿不到锁。按理说不应该啊,假如有三个线程,线程1 先申请读锁并成功拿到,然后线程2申请写锁那么必然会陷入等待,之后线程3去申请读锁,那么应该是陷入等待才对,因为pthread_rwlo

2012-10-27 21:19:54 3022 2

转载 QNX多线程同步之Barrier(屏障)

之前和大家介绍过QNX上的线程同步方法metux和semophore,通过这两种方法可以对一个或者几个资源进行加锁,避免资源使用上的冲突。在另一种情况下,某个线程需要在其它线程完成工作后才继续执行,这时就需要使用到线程同步方法barrier。 举个现实的例子,假设有三个士兵在操作一门高炮,一个负责装填炮弹,一个负责调整高炮左右方向,一个负责调整高炮角度。很明显高炮需要在三名士兵完成

2012-10-27 21:19:18 699

转载 S3C2440上LCD驱动(FrameBuffer)实例开发讲解

一、开发环境主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2 二、背景知识1. LCD工作的硬件需求:   要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以

2012-10-27 20:27:26 701

转载 读写锁

话说小明驾车正从银行返回家里的途中,还在琢磨银行中取钱过程中银行的相关事宜。想想每次排队来办业务真麻烦。也就是自己这次取的钱比较多,才这么麻烦,否则,自己才懒得来呢。其实,现在银行做的已经不错了,为了减少业务员的工作量,同时,也是缩短银行业务的办理时间和办理途径,在全国各地,各大城市的各个地图都安置了n多取款机,像一些简单的业务,如查询各余额、打印个账单之类的,可以不用到银行,直接在取款机就办了,

2012-10-27 18:24:23 935

转载 线程间_读写锁属性

Linux多线程之读写锁  Linux多线程之读写锁一、获取和释放读写锁#include int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock);int pthread_rwlock_unlock

2012-10-27 17:56:29 1062

转载 SysLink Overview

What is SysLink?(来自http://processors.wiki.ti.com/index.php/SysLink_Overview)SysLink is runtime software and an associated porting kit that simplifies the development of embedded applications in

2012-10-26 20:03:03 809

转载 SysLink UserGuide

SysLink UserGuide(来自http://processors.wiki.ti.com/index.php/SysLink_UserGuide)SysLink User GuideContents [hide]1 Introduction2 T

2012-10-26 16:09:35 2133

转载 基于TI Davinci架构的双核嵌入式应用处理器OMAPL138开发入门(TI达芬奇双核开发资料 [

基于TI Davinci架构的双核嵌入式应用处理器OMAPL138开发入门一、简介TI的达芬奇架构嵌入式应用处理器使用DSP与ARM结合的非对称多核结构,当然现在也有管脚全兼容的单核。本文要介绍的就是其中的一款低功耗处理器OMAP L138。OMAP L138包括一个主频300M的ARM9处理器内核和一个300M的C6748DSP内核(均是32位处理器)。此外还有大

2012-10-26 15:27:14 3979 1

转载 linux system V IPC 信号灯和共享内存实例

#include#include#include#include#include#include#include#include#define MAXSHM 5  //定义缓冲区数组的下标变量个数/*        定义3个信号量的内部标识  */int fullid;int emptyid;int mutexid;/* 主函

2012-10-22 16:36:08 1252

转载 linux信号量编程

/*********************程序相关信息*********************程序编号:014程序编写起始日期:2008.11.2程序编写完成日期:2008.11.2程序修改日期:                                   修改备注:程序目的:学习linux信号量所用主要函数:ftok(),semget(),semop(),se

2012-10-22 16:14:00 561

转载 Linux下Exit和_exit函数说明

exit和_exit函数都是用来终止进程的。当程序执行到exit或_exit时,系统无条件的停止剩下所有操作,清除包括PCB(进程控制块)在内的各种数据结构,并终止本进程的运行。但是,这两个函数是有区别的。exit()函数的作用是:直接使用进程停止运行,清除其使用的内存空间,并清除其在内核中的各种数据结构;_exit()函数则在这一基础上做了一些包装。在执行退出之前加了若干道工序。exit

2012-10-20 15:31:08 635

转载 异步IO(来自博客园)

结合阻塞与非阻塞访问、poll 函数可以较好地解决设备的读写,但是如果有了异步通知就更方便了。异步通知的意思是:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,这一点非常类似于硬件上“中断”地概念,比较准确的称谓是:信号驱动(SIGIO)的异步 I/O。可以使用signal()函数来设置对应的信号的处理函数。函数原型是:void (*signal(int signo

2012-10-19 10:20:25 901

转载 使用异步 I/O 大大提高应用程序的性能(来自IBM)

AIO简介Linux 异步 I/O 是 Linux 内核中提供的一个相当新的增强。它是 2.6 版本内核的一个标准特性,但是我们在 2.4 版本内核的补丁中也可以找到它。AIO 背后的基本思想是允许进程发起很多 I/O 操作,而不用阻塞或等待任何操作完成。稍后或在接收到 I/O 操作完成的通知时,进程就可以检索 I/O 操作的结果I/O模型在深入介绍 AIO API 之前,

2012-10-18 20:44:54 829

转载 linux下异步IO的简单例子

首先,贴一下异步IO中用的的一些结构体,因为平常很少用,整理起来方便查看。  aio.h中的struct aiocbstruct aiocb{  int aio_fildes; /* File desriptor. */  int aio_lio_opcode; /* Operation to be performed. */  int aio

2012-10-17 20:33:21 1404

转载 Linux内核开发之异步通知与异步I/O《来自linux设备开发详解》

阻塞I/O意味着一直等待设备可访问再访问,非阻塞I/O意味着使用poll()来查询是否可访问,而异步通知则意味着设备通知应用程序自身可访问。(异步通知:很简单,一旦设备准备好,就主动通知应用程序,这种情况下应用程序就不需要查询设备状态,这是不是特像硬件上常提的“中断的概念”。上边比较准确的说法其实应该叫做“信号驱动的异步I/O”,信号是在软件层次上对中断机制的一种模拟。)说到信号,在应用程序中

2012-10-15 21:34:51 2693

转载 poll接口《来自Linux驱动程序开发实例》

您所在的位置:读书频道 > 操作系统 > Linux > 1.2.7 poll接口1.2.7 poll接口2012-05-22 13:38 冯国进 机械工业出版社 我要评论(0) 字号:T |T综合评级:想读(9)  在读(2)  已读(1)  品书斋鉴(1)   已有12人发表书评 《Linux驱动程序开发实例》第1章 Linu

2012-10-15 21:20:55 1165

转载 异步通知

异步通知:使用异步通知机制可以提高查询设备的效率。通过使用异步通知,应用程序可以在数据可用时收到一个信号,而无需不停地轮询。设置异步通知的步骤(针对应用层来说的):1.首先制定一个进程作为文件的属主。通过使用fcntl系统调用执行F_SETOWN命令时,属主进程的ID号就会保存在filp->f_owner中,目的是为了让内核知道应该通知哪个进程。2.在设备中设置FASYNC标志。通

2012-10-15 21:17:04 959

转载 异步通知《来自Linux驱动程序开发实例》

您所在的位置:读书频道 > 操作系统 > Linux > 1.2.8 异步通知1.2.8 异步通知2012-05-22 13:38 冯国进 机械工业出版社 我要评论(0) 字号:T |T综合评级:想读(9)  在读(2)  已读(1)  品书斋鉴(1)  已有12人发表书评《Linux驱动程序开发实例》第1章 Linux设备驱动程序模型,本章主要

2012-10-15 20:49:49 858

转载 基于alsa的音量控制代码

http://www.alsa-project.org/alsa-doc/alsa-lib/group___simple_mixer.html ALSA库接口说明文档基于alsa的音量控制代码[php]//头文件#include //类定义class Sound {public:Sound();~Sound();int sound_read();vo

2012-10-11 18:45:33 12892 1

转载 Linux内核同步机制之信号量与锁

Linux内核同步控制方法有很多,信号量、锁、原子量、RCU等等,不同的实现方法应用于不同的环境来提高操作系统效率。首先,看看我们最熟悉的两种机制——信号量、锁。一、信号量 首先还是看看内核中是怎么实现的,内核中用struct semaphore数据结构表示信号量(中):struct semaphore {       spinlock_t      lock;       u

2012-10-11 13:15:47 848

转载 linux中同步例子(完成量completion)

这是一个公交司机和售票员之间的线程调度,用于理解完成量,完成量是对信号量的一种补充,主要用于多处理器系统上发生的一种微妙竞争在这里两个线程间同步,只有当售票员把门关了后,司机才能开动车,只有当司机停车后,售票员才能开门。#include #include #include #include #include MODULE_LICENSE("D

2012-10-10 23:20:40 942

转载 typeof关键字简介

typeof关键字是C语言中的一个新扩展。只要可以接受typedef名称,Sun Studio C 编译器就可以接受带有typeof的结构,包括以下语法类别:声明 函数声明符中的参数类型链表和返回类型 类型定义 类型操作符s sizeof操作符 复合文字 typeof实参 编译器接受带双下划线的关键字:__typeof和__typeof__。本文中的例子并没有遵循使用双下划线的惯例。从

2012-10-09 13:06:57 486

转载 Linux 内核的同步机制,第 1 部分(来自IBM)

一、 引言在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。在主流的Linux内核中包含了几乎所有现代的操作系统具有的同步机制,这些同步机制包括:原子操作、信号量(semaphore)、读写信号量(rw_semaph

2012-10-09 09:37:42 638

转载 Linux 内核的同步机制,第 2 部分(来自IBM)

六、大内核锁(BKL--Big Kernel Lock)大内核锁本质上也是自旋锁,但是它又不同于自旋锁,自旋锁是不可以递归获得锁的,因为那样会导致死锁。但大内核锁可以递归获得锁。大内核锁用于保护整个内核,而自旋锁用于保护非常特定的某一共享资源。进程保持大内核锁时可以发生调度,具体实现是:在执行schedule时,schedule将检查进程是否拥有大内核锁,如果有,它将被释放,以致于其它的进程能

2012-10-09 09:32:56 716

转载 高性能自旋锁 MCS Spinlock 的设计与实现(来自IBM)

引言林 昊翔 (linhaoxiang@hotmail.com), Linux 内核爱好者林昊翔,计算机科学硕士,毕业于清华大学计算机系,Linux 内核爱好者秦 君 (qinjun@cn.ibm.com), 软件工程师, IBM 自旋锁(Spinlock)是一种在 Linux 内核 [1] 中广泛运用的底层同步机制,长期以来,人们总是关注于自旋锁的安全和高效,而忽

2012-10-08 19:51:10 1594

转载 内核并发控制---RCU (来自网易)

定义在头文件linux/rcupdate.h中;一、RCU原理RCU,全名Read-Copy-Update(读-拷贝-更新);对于被RCU所保护的共享资源,读执行单元不需要获得任何锁就可以访问到它,也不需要使用原子指令,而且在除Alpha的所有架构上也不需要使用内存栅(Memory Barrier),因此不会导致锁竞争、内存延迟以及流水线停滞;不需要锁,也使得使用更加容易,因为死锁问题就不

2012-10-08 15:50:24 793

转载 内核并发控制---互斥量(来自网易)

定义在头文件linux/mutex.h中;互斥体(mutex)是Linux系统提供的另外一种互斥机制;在Linux内核中是真实存在的;1).定义互斥体struct mutex my_mutex;    //定义互斥体mutex_init(&my_mutex);    //初始化互斥体2).获取和释放互斥体:void mutex_lock(struct mutex* lock

2012-10-08 15:49:32 770

转载 内核并发控制---完成量 (来自网易)

定义在头文件linux/completion.h中;完成量(completion)是Linux系统提供的一种比信号量更好的同步机制,是对信号量的一种补充;它用于一个执行单元等待另一个执行单元完成某事;使用完成量等待时,调用进程是以独占睡眠方式进行等待的;不是忙等待;1).定义完成量:struct completion my_completion;    //定义完成量my_comple

2012-10-08 15:48:47 710

转载 内核并发控制---读写信号量(来自网易)

定义在头文件linux/rwsem.h或linux/rwsem-spinlock.h中读写信号量与信号量之间的关系,类似于读写自旋锁与自旋锁之间的关系;读写信号量可能会引起进程阻塞,但是它允许N个读执行单元同时访问共享资源,而最多只允许有一个写执行单元访问共享资源;因此,读写信号量是一种相对放宽条件的、粒度稍大于信号量的互斥机制;备注:信号量不允许任何操作之间有并发,即:读操作与读操作之间

2012-10-08 15:47:08 2240

转载 内核并发控制---信号量 (来自网易)

定义在头文件linux/semaphore.h中;信号量(semaphore)是用于保护临界区的一种常用方法,它的使用方式与自旋锁类似;与自旋锁相同,只有得到信号量的进程才能执行临界区的代码;但是,与自旋锁不同的是,当获取不到信号量的时候,进程不会在原地打转,而是进入休眠等待状态;1).定义信号量:struct semaphore sem;2).初始化信号量:void sema

2012-10-08 15:46:17 776

转载 内核并发控制---顺序锁 (来自网易)

定义在头文件linux/seqlock.h中;顺序锁(seqlock)是对读写锁的一种优化,若使用顺序锁,读执行单元绝对不会被写执行单元所阻塞,也就是说,读执行单元可以在写执行单元对被顺序锁保护的共享资源进行写操作的同时仍然可以继续读,而不必等待写执行单元完成之后再去读,同样,写执行单元也不必等待所有的读执行单元读完之后才去进行写操作;但是写执行单元与写执行单元之间仍然是互斥的,即:如果有

2012-10-08 15:45:20 579

转载 内核并发控制---中断屏蔽 (来自网易)

定义在头文件linux/irqflags.h中;在单CPU内部避免竞态的一种方法是在进入临界区之前先屏蔽系统的中断,离开临界区之前再恢复系统中断;CPU一般都应该具有打开中断和关闭中断的功能;这项功能可以保证正在执行的内核代码执行路径不会被中断处理程序所抢占,防止某些竞态条件的发生;具体而言,中断屏蔽将使得中断与进程之间的并发不再出现,而且,由于Linux内核的进程调度等操作都是依赖中断来实现

2012-10-08 15:44:18 1004

转载 内核并发控制---原子操作(来自网易)

定义在头文件asm/atomic.h中;原子操作指的是在执行过程中不会被别的代码路径所打断的操作;Linux内核提供了一系列的函数来实现内核中的原子操作,这些函数又分为两类,分别针对位变量和整型变量进行原子操作;它们的共同点是:在任何情况下操作都是原子的,内核代码可以安全地调用它们而不会被打断;位变量和整型变量的原子操作都依赖于底层CPU的原子操作来实现,因此所有这些函数都是与CPU架构密

2012-10-08 15:43:16 846

转载 内核并发控制---自旋锁(来自网易)

定义在头文件linux/spinlock.h中;自旋锁(spin lock)是一种对临界资源进行互斥访问的典型手段;为了获得一个自旋锁,在某CPU上运行的代码需要首先执行一个原子操作,该操作测试并设置某个内存变量,由于该操作是原子操作,所以在该操作完成之前,其它执行单元对该内存变量的访问被禁止;如果测试结果表明该自旋锁已经空闲,则程序获得这个自旋锁并继续运行;如果测试结果表明该自旋锁仍然被

2012-10-08 15:42:06 597

转载 内核并发控制---读写自旋锁 (来自网易)

定义在头文件linux/spinlock.h或linux/rwlock.h中;自旋锁并不关心其锁定的临界区究竟会进行怎么样的操作,不管是读还是写,都一视同仁,即便是多个执行单元同时并发地读取临界区资源,也会被锁住;而事实上,对共享资源的访问,多个执行单元同时读取临界资源,是不会有问题的;读写自旋锁可以允许读操作的并发;读写自旋锁是从自旋锁衍生过来的;它是一种比自旋锁粒度更小的锁机制,它保留

2012-10-08 15:37:39 798

转载 内核同步 (来自chinaunix总结)

内核同步内核服务请求的方式  老板(硬件中断),客人(用户态发出的系统调用,或异常)   不顾客人顾老板   顾完新老板,再顾旧老板   顾完老板,可能顾旧客人,也可能顾新客人抢占和并发  抢占   抢占式内核的特定:进程切换的时机多了。    与抢占无关的切换:     当前进程自愿放弃CPU(如:睡等资源)      进程由内核态

2012-10-08 14:37:38 798

转载 草稿

http://www.cnblogs.com/yanyansha/archive/2011/02/27/1966338.htmlhttp://www.linuxforum.net/forum/gshowflat.php?Cat=&Board=driver&Number=382745&page=0&view=collapsed&sb=5&o=all http://blog.163.com

2012-10-07 20:23:14 1023

转载 原子位操作

原子位操作     操作函数的参数是一个指针和一个位号 原子位操作定义在文件中。令人感到奇怪的是位操作函数是对普通的内存地址进行操作的。原子位操作在多数情况下是对一个字长的内存访问,因而位号该位于0-31之间(在64位机器上是0-63之间),但是对位号的范围没有限制。 原子操作中的位操作部分函数如下:void set_bit(int nr, void *addr)

2012-10-07 18:19:22 1806

转载 原子操作

原子操作所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树的include/asm/atomic.h文件中,它们都使用汇编语言实现,因为C语言并不能实现这样的操作。在linux中

2012-10-06 16:11:07 750

转载 内核同步机制-信号量(semaphore)

三、内核信号量(semaphore) Linux的信号量是一种睡眠锁,这个不同于自旋锁.如果有一个任务试图获得一个已经被占用的信号量时,信号量会将其推进一个等待队列(具体可以参考进程的活动状态),然后让其睡眠,此时处理器能重获自由,而去执行其他代码.当持有信号量的进程将信号量释放后,处于等待队列中的那个进程会被唤醒,并获得该信号量.所以和自旋锁的区别是:1)信号量适用于锁会被长时间持有

2012-10-06 16:09:36 3917 1

ICMP ping 实现

ping 实现 ICMP

2015-06-01

candence16.6安装破解文件

自己安装candence16.6过程中使用的破解文件,希望可以给大家有帮助。哈哈

2013-04-06

candence16.6安装破解记录

个人安装candence16.6记录,已经破解成功,希望给大家做参考

2013-04-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除