Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
e319ec4b
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,发现更多精彩内容 >>
提交
e319ec4b
编写于
8月 21, 2011
作者:
B
Bruce Momjian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Simplify errno generating in thread testing program.
上级
b33f78df
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
41 addition
and
19 deletion
+41
-19
src/test/thread/thread_test.c
src/test/thread/thread_test.c
+41
-19
未找到文件。
src/test/thread/thread_test.c
浏览文件 @
e319ec4b
...
@@ -263,6 +263,9 @@ main(int argc, char *argv[])
...
@@ -263,6 +263,9 @@ main(int argc, char *argv[])
}
}
}
}
/*
* func_call_1
*/
static
void
static
void
func_call_1
(
void
)
func_call_1
(
void
)
{
{
...
@@ -272,23 +275,38 @@ func_call_1(void)
...
@@ -272,23 +275,38 @@ func_call_1(void)
void
*
p
;
void
*
p
;
#endif
#endif
#ifdef WIN32
#ifdef WIN32
HANDLE
h1
,
h2
;
HANDLE
h1
;
#else
int
fd
;
#endif
#endif
unlink
(
TEMP_FILENAME_1
);
unlink
(
TEMP_FILENAME_1
);
/* Set errno = EEXIST */
/* create, then try to fail on exclusive create open */
/* create, then try to fail on exclusive create open */
#ifdef WIN32
#ifdef WIN32
h1
=
CreateFile
(
TEMP_FILENAME_1
,
GENERIC_WRITE
,
0
,
NULL
,
OPEN_ALWAYS
,
0
,
NULL
);
if
((
h1
=
CreateFile
(
TEMP_FILENAME_1
,
GENERIC_WRITE
,
0
,
NULL
,
OPEN_ALWAYS
,
0
,
NULL
))
==
h2
=
CreateFile
(
TEMP_FILENAME_1
,
GENERIC_WRITE
,
0
,
NULL
,
CREATE_NEW
,
0
,
NULL
);
INVALID_HANDLE_VALUE
)
if
(
h1
==
INVALID_HANDLE_VALUE
||
GetLastError
()
!=
ERROR_FILE_EXISTS
)
#else
if
((
fd
=
open
(
TEMP_FILENAME_1
,
O_RDWR
|
O_CREAT
,
0600
))
<
0
)
#endif
{
fprintf
(
stderr
,
"Could not create file %s in current directory
\n
"
,
TEMP_FILENAME_1
);
exit
(
1
);
}
#ifdef WIN32
if
(
CreateFile
(
TEMP_FILENAME_1
,
GENERIC_WRITE
,
0
,
NULL
,
CREATE_NEW
,
0
,
NULL
)
!=
INVALID_HANDLE_VALUE
||
GetLastError
()
!=
ERROR_FILE_EXISTS
)
#else
#else
if
(
open
(
TEMP_FILENAME_1
,
O_RDWR
|
O_CREAT
,
0600
)
<
0
||
if
(
open
(
TEMP_FILENAME_1
,
O_RDWR
|
O_CREAT
|
O_EXCL
,
0600
)
>=
0
)
open
(
TEMP_FILENAME_1
,
O_RDWR
|
O_CREAT
|
O_EXCL
,
0600
)
>=
0
)
#endif
#endif
{
{
fprintf
(
stderr
,
"Could not create file in current directory or
\n
"
);
fprintf
(
stderr
,
fprintf
(
stderr
,
"could not generate failure for create file in current directory **
\n
exiting
\n
"
);
"Could not generate failure for exclusive file create of %s in current directory **
\n
exiting
\n
"
,
TEMP_FILENAME_1
);
exit
(
1
);
exit
(
1
);
}
}
...
@@ -315,6 +333,11 @@ func_call_1(void)
...
@@ -315,6 +333,11 @@ func_call_1(void)
exit
(
1
);
exit
(
1
);
}
}
#ifdef WIN32
CloseHandle
(
h1
);
#else
close
(
fd
);
#endif
unlink
(
TEMP_FILENAME_1
);
unlink
(
TEMP_FILENAME_1
);
#ifndef HAVE_STRERROR_R
#ifndef HAVE_STRERROR_R
...
@@ -352,6 +375,9 @@ func_call_1(void)
...
@@ -352,6 +375,9 @@ func_call_1(void)
}
}
/*
* func_call_2
*/
static
void
static
void
func_call_2
(
void
)
func_call_2
(
void
)
{
{
...
@@ -363,15 +389,14 @@ func_call_2(void)
...
@@ -363,15 +389,14 @@ func_call_2(void)
unlink
(
TEMP_FILENAME_2
);
unlink
(
TEMP_FILENAME_2
);
/* open non-existant file */
/* Set errno = ENOENT */
#ifdef WIN32
CreateFile
(
TEMP_FILENAME_2
,
GENERIC_WRITE
,
0
,
NULL
,
OPEN_EXISTING
,
0
,
NULL
);
/* This will fail, but we can't check errno yet */
if
(
GetLastError
()
!=
ERROR_FILE_NOT_FOUND
)
if
(
unlink
(
TEMP_FILENAME_2
)
!=
-
1
)
#else
if
(
open
(
TEMP_FILENAME_2
,
O_RDONLY
,
0600
)
>=
0
)
#endif
{
{
fprintf
(
stderr
,
"Read-only open succeeded without create **
\n
exiting
\n
"
);
fprintf
(
stderr
,
"Could not generate failure for unlink of %s in current directory **
\n
exiting
\n
"
,
TEMP_FILENAME_2
);
exit
(
1
);
exit
(
1
);
}
}
...
@@ -394,12 +419,9 @@ func_call_2(void)
...
@@ -394,12 +419,9 @@ func_call_2(void)
#else
#else
fprintf
(
stderr
,
"errno not thread-safe **
\n
exiting
\n
"
);
fprintf
(
stderr
,
"errno not thread-safe **
\n
exiting
\n
"
);
#endif
#endif
unlink
(
TEMP_FILENAME_2
);
exit
(
1
);
exit
(
1
);
}
}
unlink
(
TEMP_FILENAME_2
);
#ifndef HAVE_STRERROR_R
#ifndef HAVE_STRERROR_R
/*
/*
* If strerror() uses sys_errlist, the pointer might change for different
* If strerror() uses sys_errlist, the pointer might change for different
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录