Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
6016148c
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6016148c
编写于
11月 07, 1997
作者:
B
Bruce Momjian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
new alpha linux locking from Travis Melhiser <melhiser@viper.co.union.nc.us>
上级
06a70013
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
21 addition
and
51 deletion
+21
-51
src/include/storage/s_lock.h
src/include/storage/s_lock.h
+21
-51
未找到文件。
src/include/storage/s_lock.h
浏览文件 @
6016148c
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.1
1 1997/10/30 05:24:19
momjian Exp $
* $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.1
2 1997/11/07 21:35:41
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -24,10 +24,6 @@
* ;
* }
*
* In addition to modifying this file you will need to modify
* the appropriate ...src/include/port/...h file to define
* HAS_TEST_AND_SET for the appropriate circumstances.
*
* If this is not done, POSTGRES will default to using System V
* semaphores (and take a large performance hit -- around 40% of
* its time on a DS5000/240 is spent in semop(3)...).
...
...
@@ -232,31 +228,6 @@ tas_dummy()
#endif
/* sun3 */
/*
* M68000 ports under NetBSD.
*
* This version should also work on a sun3, but I can't test it.
* Conversely the sun3 version should work under NetBSD/m68k, but
* it doesn't.
*/
#if defined(__NetBSD__) && defined(__m68k__)
static
void
S_LOCK
(
char
*
lock
)
{
asm
(
"
movel a6@(8),a0
LOOP:
tas a0@
bmi LOOP
"
);
}
#define S_UNLOCK(lock) (*(lock) = 0)
#define S_INIT_LOCK(lock) S_UNLOCK(lock)
#endif
/* M68000 && NetBSD */
/*
* sparc machines
*/
...
...
@@ -342,29 +313,28 @@ tas_dummy()
#if defined(__alpha__) && defined(linux)
#define S_LOCK(lock) do \
{ \
slock_t _res; \
do \
{ \
__asm__(" ldq $0, %0 \n\
bne $0, already_set \n\
ldq_l $0, %0 \n\
bne $0, already_set \n\
or $31, 1, $0 \n\
stq_c $0, %0 \n\
beq $0, stqc_fail \n\
success: bis $31, $31, %1 \n\
mb \n\
jmp $31, end \n\
stqc_fail: or $31, 1, $0 \n\
already_set: bis $0, $0, %1 \n\
end: nop ": "=m"(*lock), "=r"(_res): :"0"); \
} while (_res != 0); \
} while (0)
#define S_LOCK(lock) do { \
slock_t _res; \
do { \
__asm__(" ldq $0, %0 \n\
bne $0, already_set%= \n\
ldq_l $0, %0 \n\
bne $0, already_set%= \n\
or $31, 1, $0 \n\
stq_c $0, %0 \n\
beq $0, stqc_fail%= \n\
success%=: \n\
bis $31, $31, %1 \n\
mb \n\
jmp $31, end%= \n\
stqc_fail%=: or $31, 1, $0 \n\
already_set%=: bis $0, $0, %1 \n\
end%=: nop ": "=m"(*lock), "=r"(_res): :"0"); \
} while (_res != 0); \
} while (0)
#define S_UNLOCK(lock) (
__asm__("mb"), *(lock) = 0
)
#define S_UNLOCK(lock) (
{ __asm__("mb \n"); *(lock) = 0; }
)
#define S_INIT_LOCK(lock) S_UNLOCK(lock)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录