高手们帮忙看一下这段代码的效果,谢谢!
#define LOCK ""
;============================================
#define LOCK_SECTION_NAME \
".text.lock." __stringify(KBUILD_BASENAME)
#define LOCK_SECTION_START(extra) \
".subsection 1" \
extra \
".ifndef " LOCK_SECTION_NAME \
LOCK_SECTION_NAME ":" \
".endif"
#define LOCK_SECTION_END \
".previous"
;===============这是一段在c语言中的嵌入汇编=============
__asm__ __volatile__(
"# atomic down operation"
LOCK "decl %0" ;* --sem->count */
"js 2f"
"1:"
LOCK_SECTION_START("")
"2:call __down_failed"
"jmp 1b"
LOCK_SECTION_END
:"=m" (sem->count)
:"c" (sem)
:"memory");
;=========================
上面这一段是一个原子操作,可是偶不怎么懂汇编,请各位大侠给俺解释一下是怎么样实现原子操作的,重谢!!