Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
346884c4
D
dragonwell8_hotspot
项目概览
openanolis
/
dragonwell8_hotspot
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_hotspot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
346884c4
编写于
10月 16, 2013
作者:
S
simonis
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8026487: PPC64: Implement 'os::fork_and_exec' on AIX
Reviewed-by: kvn, twisti
上级
f9119c4d
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
56 addition
and
4 deletion
+56
-4
src/os/aix/vm/os_aix.cpp
src/os/aix/vm/os_aix.cpp
+56
-4
未找到文件。
src/os/aix/vm/os_aix.cpp
浏览文件 @
346884c4
...
...
@@ -227,8 +227,12 @@ julong os::available_memory() {
}
julong
os
::
Aix
::
available_memory
()
{
Unimplemented
();
return
0
;
os
::
Aix
::
meminfo_t
mi
;
if
(
os
::
Aix
::
get_meminfo
(
&
mi
))
{
return
mi
.
real_free
;
}
else
{
return
0xFFFFFFFFFFFFFFFFLL
;
}
}
julong
os
::
physical_memory
()
{
...
...
@@ -5060,8 +5064,56 @@ extern char** environ;
// Unlike system(), this function can be called from signal handler. It
// doesn't block SIGINT et al.
int
os
::
fork_and_exec
(
char
*
cmd
)
{
Unimplemented
();
return
0
;
char
*
argv
[
4
]
=
{
"sh"
,
"-c"
,
cmd
,
NULL
};
pid_t
pid
=
fork
();
if
(
pid
<
0
)
{
// fork failed
return
-
1
;
}
else
if
(
pid
==
0
)
{
// child process
// try to be consistent with system(), which uses "/usr/bin/sh" on AIX
execve
(
"/usr/bin/sh"
,
argv
,
environ
);
// execve failed
_exit
(
-
1
);
}
else
{
// copied from J2SE ..._waitForProcessExit() in UNIXProcess_md.c; we don't
// care about the actual exit code, for now.
int
status
;
// Wait for the child process to exit. This returns immediately if
// the child has already exited. */
while
(
waitpid
(
pid
,
&
status
,
0
)
<
0
)
{
switch
(
errno
)
{
case
ECHILD
:
return
0
;
case
EINTR
:
break
;
default:
return
-
1
;
}
}
if
(
WIFEXITED
(
status
))
{
// The child exited normally; get its exit code.
return
WEXITSTATUS
(
status
);
}
else
if
(
WIFSIGNALED
(
status
))
{
// The child exited because of a signal
// The best value to return is 0x80 + signal number,
// because that is what all Unix shells do, and because
// it allows callers to distinguish between process exit and
// process death by signal.
return
0x80
+
WTERMSIG
(
status
);
}
else
{
// Unknown exit code; pass it through
return
status
;
}
}
// Remove warning.
return
-
1
;
}
// is_headless_jre()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录