GCC Inline Assembly 实现互斥锁
来源:互联网 发布:美人鱼全球总票房数据 编辑:程序博客网 时间:2024/06/02 19:04
/*自旋锁*/
int lock=0;
void enter_region()
{
__asm__ __volatile__(
"1:movl $0x01,%%eax\n\t"
"xchg %0,%%eax\n\t"
"cmp $0x00,%%eax\n\t"
"jnz 1b\n\t"
:"+m"(lock)
::"eax");
}
void leave_region()
{
__asm__ __volatile__(
"movl $0x00,%0\n\t"
:"=m"(lock)
::);
}
/*互斥量*/
int mutex=0;
void mutex_lock()
{
__asm__ __volatile__(
"2:movl $0x01,%%eax\n\t"
"xchg %0,%%eax\n\t"
"cmp $0x00,%%eax\n\t"
"je 3f\n\t"
"call sched_yield\n\t"
"jmp 2b\n\t"
"3:\n\t"
:"+m"(mutex)
::"eax");
}
void mutex_unlock()
{
__asm__ __volatile__(
"movl $0x00,%0\n\t"
:"=m"(mutex)
::);
}
关于GCC Inline Assembly以及AT&T Assembly的相关语法规则,有兴趣的朋友可以自己查查文档资料。
还有很多东西没搞清楚!不过,鼓励一下自己,再接再厉!
- GCC Inline Assembly 实现互斥锁
- GCC-Inline-Assembly-HOWTO
- GCC-Inline-Assembly
- GCC Inline Assembly-HOWTO
- GCC-Inline-Assembly-HOWTO
- GCC-Inline-Assembly-HOWTO
- GCC-Inline-Assembly-HOWTO
- GCC-Inline-Assembly-HOWTO
- GCC-Inline-Assembly-HOWTO
- GCC-Inline-Assembly
- I hate GCC inline Assembly
- Using Inline Assembly With gcc
- GCC - Inline - Assembly - HOWTO
- GCC内联汇编(inline assembly)
- Inline Assembly in GCC Vs VC++
- GCC-Inline-Assembly-HOWTO//AT&T
- Inline Assembly
- GCC下使用Inline Assembly的初步心得
- tchar char 字符 和 字符数组 字符串操作
- MFC TCHAR 和CHAR相互转换
- C++ 静态变量之为什么只初始化一次
- 如何在smarty模板中执行php代码
- Sizeof与Strlen的区别与联系
- GCC Inline Assembly 实现互斥锁
- ubuntu 常用命令 备忘
- Monkey测试(机顶盒和智能电视)
- Smarty 限制foreach的循环次数
- SQL判断表是否存在,存在的话就删除原表再建立新表
- 网站安全防止网站被挂木马“安全狗”
- 重新设置TortoiseSVN用户名和密码
- 【PAT】1055. The World's Richest (25)
- opencv复杂变换cvPyrDown (转载于博客园 0fengfan0 )