全部博文(685)
分类: 嵌入式
2014-09-23 13:57:13
信号量的原理就是一个整数的增减,up=加1,down = 减1;当这个值>=1时它就是属于资源释放状态,此时使用down能获得,如果<=0则无法down获得。
其实信号量不是互斥的,linux内核说定义互斥信号量,只是说你把它初始化为1或者0,然后通过配对使用up down来保证。
up的函数就是加1,down的函数就是减1.
例子:
DECLARE_MUTEX(regs_mutex); //声明并初始化互斥信号量为0。
xxxxx
xxxx
static void ov9650_init_regs(void)
{
int i;
down(®s_mutex);
for (i=0; i
if (regs[i].subaddr == 0xff)
{
mdelay(regs[i].value);
continue;
}
sccb_write(OV9650_SCCB_ADDR, regs[i].subaddr, regs[i].value);
}
up(®s_mutex);
}