易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux 2.6内核的新锁机制 RCU

http://www.ibm.com/developerworks/cn/linux/l-rcu/
函数摘要:
C代码
/*读者在读取由RCU保护的共享数据时使用该函数标记它进入读端临界区。*/ 
rcu_read_lock()  
/* 
该函数与rcu_read_lock配对使用,用以标记读者退出读端临界区。夹在这两个函数之间的代码区称为"读端临界区"(read-side critical section)。读端临界区可以嵌套,如图3,临界区2被嵌套在临界区1内。 
*/ 
rcu_read_unlock()  
 
/* 
该函数由RCU写端调用,它将阻塞写者,直到经过grace period后,即所有的读者已经完成读端临界区,写者才可以继续下一步操作。如果有多个RCU写端调用该函数,他们将在一个grace period之后全部被唤醒。 
*/ 
synchronize_rcu()  
/* 

数 call_rcu 也由 RCU 写端调用,它不会使写者阻塞,因而可以在中断上下文或 softirq 使用,而
synchronize_rcu、synchronize_kernel 和synchronize_shced
只能在进程上下文使用。该函数将把函数 func 挂接到 RCU回调函数链上,然后立即返回。一旦所有的 CPU
都已经完成端临界区操作,该函数将被调用来释放删除的将绝不在被应用的数据。参数 head 用于记录回调函数 func,一般该结构会作为被 RCU
保护的数据结构的一个字段,以便省去单独为该结构分配内存的操作。需要指出的是,函数 synchronize_rcu
的实现实际上使用函数call_rcu。 
*/ 
void fastcall call_rcu(struct rcu_head *head,  
                                void (*func)(struct rcu_head *rcu))  
 
/* 
写端调用,把一个指针p赋为指针v。 
*/ 
rcu_assign_pointer()  
typeof(p) rcu_assign_pointer(p, typeof(p) v);  
 
/* 
获得指针p的解引用值 
*/ 
rcu_dereference()  
typeof(p) rcu_assign_pointer(p, typeof(p) v); 
http://group.ednchina.com/1036/21283.aspx
http://blog.chinaunix.net/u1/51562/showart_1341707.html
http://www.360doc.com/content/10/0106/17/701200_12820595.shtml


相关文档:

实战Linux Bluetooth编程 (七) SDP协议

Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......

Linux共享库


共享库
介绍共享库
Linux 系统上有两类根本不同的 Linux 可执行程序。第一类是静态链接的可执行程序。静态可执行程序包含执行所需的所有函数 — 换句话说,它们是“完整的”。因为这一原因,静态可执行程序不依赖任何外部库就可以运行。
第二类是动态链接的可执行程序。
静态可执行程序与动 ......

教你轻松实现用SCOM监控Linux主机

最近由于工作需要,埋头研究了一下如何利用Scom来监控开源平台的系统,经过努力后获得小小的成果-成功监控了redhat系统。小弟在开心之余当然不忘把成果拿出来share一下,顺便发扬与人分享的新世纪雷锋精神^_^
  要想使用Scom成功监控Redhat,您的环境需要满足如下条件:
  1.  Scom版本为2007 R2,并且导入了Red ......

Linux内核的链表

自2.1内核开发版以来,linux就引入了正式的链表实现,采用的是双向循环链表。因此,在开发过程中应该使用这些已有的接口。
1. 定义
链表结构体定义在文件<linux/list.h>中。
    struct list_head {
       struct list_head  *next;
     &n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号