日期:2014-05-16  浏览次数:20746 次

linux内核原子量操作的小疑问
atomic_set(&s->in_write_path, 1); //原子量的操作,只会完成相应的操作不会被干扰
audio_process_dma(s); //dma传输启动
atomic_set(&s->in_write_path, 0);
为何bixatomic_set 1呢先写0是否一样,毕竟只是让CPU安心的干完这个程序而已。难道是习惯或者为了和自旋锁或者信号量统一起来吗,请指教

------解决方案--------------------
原子操作的含义仅仅是:本条语句的执行过程中不可被打断;置1还是置0,与原子操作无关。
这里的置1是表明,正处于DMA传输中;置0表明,DMA传输结束了。
------解决方案--------------------
探讨
那就是说明1 表示原子操作启动中,0表示结束咯,顺序不能乱换是这个意思吧