Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
271ef4f2
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看板
提交
271ef4f2
编写于
7月 24, 2013
作者:
M
minqi
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
e5bd3c6f
c7253cc6
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
44 addition
and
42 deletion
+44
-42
src/os_cpu/bsd_x86/vm/orderAccess_bsd_x86.inline.hpp
src/os_cpu/bsd_x86/vm/orderAccess_bsd_x86.inline.hpp
+3
-3
src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp
src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp
+4
-4
src/os_cpu/solaris_x86/vm/orderAccess_solaris_x86.inline.hpp
src/os_cpu/solaris_x86/vm/orderAccess_solaris_x86.inline.hpp
+4
-4
src/os_cpu/windows_x86/vm/orderAccess_windows_x86.inline.hpp
src/os_cpu/windows_x86/vm/orderAccess_windows_x86.inline.hpp
+3
-3
src/share/vm/oops/method.cpp
src/share/vm/oops/method.cpp
+7
-0
test/runtime/jsig/Test8017498.sh
test/runtime/jsig/Test8017498.sh
+22
-25
test/runtime/jsig/TestJNI.c
test/runtime/jsig/TestJNI.c
+1
-3
未找到文件。
src/os_cpu/bsd_x86/vm/orderAccess_bsd_x86.inline.hpp
浏览文件 @
271ef4f2
...
...
@@ -72,7 +72,7 @@ inline jushort OrderAccess::load_acquire(volatile jushort* p) { return *p; }
inline
juint
OrderAccess
::
load_acquire
(
volatile
juint
*
p
)
{
return
*
p
;
}
inline
julong
OrderAccess
::
load_acquire
(
volatile
julong
*
p
)
{
return
Atomic
::
load
((
volatile
jlong
*
)
p
);
}
inline
jfloat
OrderAccess
::
load_acquire
(
volatile
jfloat
*
p
)
{
return
*
p
;
}
inline
jdouble
OrderAccess
::
load_acquire
(
volatile
jdouble
*
p
)
{
return
*
p
;
}
inline
jdouble
OrderAccess
::
load_acquire
(
volatile
jdouble
*
p
)
{
return
jdouble_cast
(
Atomic
::
load
((
volatile
jlong
*
)
p
))
;
}
inline
intptr_t
OrderAccess
::
load_ptr_acquire
(
volatile
intptr_t
*
p
)
{
return
*
p
;
}
inline
void
*
OrderAccess
::
load_ptr_acquire
(
volatile
void
*
p
)
{
return
*
(
void
*
volatile
*
)
p
;
}
...
...
@@ -87,7 +87,7 @@ inline void OrderAccess::release_store(volatile jushort* p, jushort v) { *p
inline
void
OrderAccess
::
release_store
(
volatile
juint
*
p
,
juint
v
)
{
*
p
=
v
;
}
inline
void
OrderAccess
::
release_store
(
volatile
julong
*
p
,
julong
v
)
{
Atomic
::
store
((
jlong
)
v
,
(
volatile
jlong
*
)
p
);
}
inline
void
OrderAccess
::
release_store
(
volatile
jfloat
*
p
,
jfloat
v
)
{
*
p
=
v
;
}
inline
void
OrderAccess
::
release_store
(
volatile
jdouble
*
p
,
jdouble
v
)
{
*
p
=
v
;
}
inline
void
OrderAccess
::
release_store
(
volatile
jdouble
*
p
,
jdouble
v
)
{
release_store
((
volatile
jlong
*
)
p
,
jlong_cast
(
v
))
;
}
inline
void
OrderAccess
::
release_store_ptr
(
volatile
intptr_t
*
p
,
intptr_t
v
)
{
*
p
=
v
;
}
inline
void
OrderAccess
::
release_store_ptr
(
volatile
void
*
p
,
void
*
v
)
{
*
(
void
*
volatile
*
)
p
=
v
;
}
...
...
@@ -190,7 +190,7 @@ inline void OrderAccess::release_store_fence(volatile juint* p, juint v)
inline
void
OrderAccess
::
release_store_fence
(
volatile
julong
*
p
,
julong
v
)
{
release_store_fence
((
volatile
jlong
*
)
p
,
(
jlong
)
v
);
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
jfloat
*
p
,
jfloat
v
)
{
*
p
=
v
;
fence
();
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
jdouble
*
p
,
jdouble
v
)
{
*
p
=
v
;
fence
(
);
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
jdouble
*
p
,
jdouble
v
)
{
release_store_fence
((
volatile
jlong
*
)
p
,
jdouble_cast
(
v
)
);
}
inline
void
OrderAccess
::
release_store_ptr_fence
(
volatile
intptr_t
*
p
,
intptr_t
v
)
{
#ifdef AMD64
...
...
src/os_cpu/linux_x86/vm/orderAccess_linux_x86.inline.hpp
浏览文件 @
271ef4f2
...
...
@@ -72,7 +72,7 @@ inline jushort OrderAccess::load_acquire(volatile jushort* p) { return *p; }
inline
juint
OrderAccess
::
load_acquire
(
volatile
juint
*
p
)
{
return
*
p
;
}
inline
julong
OrderAccess
::
load_acquire
(
volatile
julong
*
p
)
{
return
Atomic
::
load
((
volatile
jlong
*
)
p
);
}
inline
jfloat
OrderAccess
::
load_acquire
(
volatile
jfloat
*
p
)
{
return
*
p
;
}
inline
jdouble
OrderAccess
::
load_acquire
(
volatile
jdouble
*
p
)
{
return
*
p
;
}
inline
jdouble
OrderAccess
::
load_acquire
(
volatile
jdouble
*
p
)
{
return
jdouble_cast
(
Atomic
::
load
((
volatile
jlong
*
)
p
))
;
}
inline
intptr_t
OrderAccess
::
load_ptr_acquire
(
volatile
intptr_t
*
p
)
{
return
*
p
;
}
inline
void
*
OrderAccess
::
load_ptr_acquire
(
volatile
void
*
p
)
{
return
*
(
void
*
volatile
*
)
p
;
}
...
...
@@ -87,7 +87,7 @@ inline void OrderAccess::release_store(volatile jushort* p, jushort v) { *p
inline
void
OrderAccess
::
release_store
(
volatile
juint
*
p
,
juint
v
)
{
*
p
=
v
;
}
inline
void
OrderAccess
::
release_store
(
volatile
julong
*
p
,
julong
v
)
{
Atomic
::
store
((
jlong
)
v
,
(
volatile
jlong
*
)
p
);
}
inline
void
OrderAccess
::
release_store
(
volatile
jfloat
*
p
,
jfloat
v
)
{
*
p
=
v
;
}
inline
void
OrderAccess
::
release_store
(
volatile
jdouble
*
p
,
jdouble
v
)
{
*
p
=
v
;
}
inline
void
OrderAccess
::
release_store
(
volatile
jdouble
*
p
,
jdouble
v
)
{
release_store
((
volatile
jlong
*
)
p
,
jlong_cast
(
v
))
;
}
inline
void
OrderAccess
::
release_store_ptr
(
volatile
intptr_t
*
p
,
intptr_t
v
)
{
*
p
=
v
;
}
inline
void
OrderAccess
::
release_store_ptr
(
volatile
void
*
p
,
void
*
v
)
{
*
(
void
*
volatile
*
)
p
=
v
;
}
...
...
@@ -129,7 +129,7 @@ inline void OrderAccess::store_fence(jushort* p, jushort v) { store_fence((j
inline
void
OrderAccess
::
store_fence
(
juint
*
p
,
juint
v
)
{
store_fence
((
jint
*
)
p
,
(
jint
)
v
);
}
inline
void
OrderAccess
::
store_fence
(
julong
*
p
,
julong
v
)
{
store_fence
((
jlong
*
)
p
,
(
jlong
)
v
);
}
inline
void
OrderAccess
::
store_fence
(
jfloat
*
p
,
jfloat
v
)
{
*
p
=
v
;
fence
();
}
inline
void
OrderAccess
::
store_fence
(
jdouble
*
p
,
jdouble
v
)
{
*
p
=
v
;
fence
(
);
}
inline
void
OrderAccess
::
store_fence
(
jdouble
*
p
,
jdouble
v
)
{
store_fence
((
jlong
*
)
p
,
jlong_cast
(
v
)
);
}
inline
void
OrderAccess
::
store_ptr_fence
(
intptr_t
*
p
,
intptr_t
v
)
{
#ifdef AMD64
...
...
@@ -190,7 +190,7 @@ inline void OrderAccess::release_store_fence(volatile juint* p, juint v)
inline
void
OrderAccess
::
release_store_fence
(
volatile
julong
*
p
,
julong
v
)
{
release_store_fence
((
volatile
jlong
*
)
p
,
(
jlong
)
v
);
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
jfloat
*
p
,
jfloat
v
)
{
*
p
=
v
;
fence
();
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
jdouble
*
p
,
jdouble
v
)
{
*
p
=
v
;
fence
(
);
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
jdouble
*
p
,
jdouble
v
)
{
release_store_fence
((
volatile
jlong
*
)
p
,
jlong_cast
(
v
)
);
}
inline
void
OrderAccess
::
release_store_ptr_fence
(
volatile
intptr_t
*
p
,
intptr_t
v
)
{
#ifdef AMD64
...
...
src/os_cpu/solaris_x86/vm/orderAccess_solaris_x86.inline.hpp
浏览文件 @
271ef4f2
...
...
@@ -88,7 +88,7 @@ inline jushort OrderAccess::load_acquire(volatile jushort* p) { return *p; }
inline
juint
OrderAccess
::
load_acquire
(
volatile
juint
*
p
)
{
return
*
p
;
}
inline
julong
OrderAccess
::
load_acquire
(
volatile
julong
*
p
)
{
return
Atomic
::
load
((
volatile
jlong
*
)
p
);
}
inline
jfloat
OrderAccess
::
load_acquire
(
volatile
jfloat
*
p
)
{
return
*
p
;
}
inline
jdouble
OrderAccess
::
load_acquire
(
volatile
jdouble
*
p
)
{
return
*
p
;
}
inline
jdouble
OrderAccess
::
load_acquire
(
volatile
jdouble
*
p
)
{
return
jdouble_cast
(
Atomic
::
load
((
volatile
jlong
*
)
p
))
;
}
inline
intptr_t
OrderAccess
::
load_ptr_acquire
(
volatile
intptr_t
*
p
)
{
return
*
p
;
}
inline
void
*
OrderAccess
::
load_ptr_acquire
(
volatile
void
*
p
)
{
return
*
(
void
*
volatile
*
)
p
;
}
...
...
@@ -103,7 +103,7 @@ inline void OrderAccess::release_store(volatile jushort* p, jushort v) { *p
inline
void
OrderAccess
::
release_store
(
volatile
juint
*
p
,
juint
v
)
{
*
p
=
v
;
}
inline
void
OrderAccess
::
release_store
(
volatile
julong
*
p
,
julong
v
)
{
Atomic
::
store
((
jlong
)
v
,
(
volatile
jlong
*
)
p
);
}
inline
void
OrderAccess
::
release_store
(
volatile
jfloat
*
p
,
jfloat
v
)
{
*
p
=
v
;
}
inline
void
OrderAccess
::
release_store
(
volatile
jdouble
*
p
,
jdouble
v
)
{
*
p
=
v
;
}
inline
void
OrderAccess
::
release_store
(
volatile
jdouble
*
p
,
jdouble
v
)
{
release_store
((
volatile
jlong
*
)
p
,
jlong_cast
(
v
))
;
}
inline
void
OrderAccess
::
release_store_ptr
(
volatile
intptr_t
*
p
,
intptr_t
v
)
{
*
p
=
v
;
}
inline
void
OrderAccess
::
release_store_ptr
(
volatile
void
*
p
,
void
*
v
)
{
*
(
void
*
volatile
*
)
p
=
v
;
}
...
...
@@ -129,9 +129,9 @@ inline void OrderAccess::release_store_fence(volatile jlong* p, jlong v)
inline
void
OrderAccess
::
release_store_fence
(
volatile
jubyte
*
p
,
jubyte
v
)
{
*
p
=
v
;
fence
();
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
jushort
*
p
,
jushort
v
)
{
*
p
=
v
;
fence
();
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
juint
*
p
,
juint
v
)
{
*
p
=
v
;
fence
();
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
julong
*
p
,
julong
v
)
{
release_store
(
p
,
v
);
fence
();
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
julong
*
p
,
julong
v
)
{
release_store
(
(
jlong
*
)
p
,
(
jlong
)
v
);
fence
();
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
jfloat
*
p
,
jfloat
v
)
{
*
p
=
v
;
fence
();
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
jdouble
*
p
,
jdouble
v
)
{
*
p
=
v
;
fence
(
);
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
jdouble
*
p
,
jdouble
v
)
{
release_store_fence
((
volatile
jlong
*
)
p
,
jlong_cast
(
v
)
);
}
inline
void
OrderAccess
::
release_store_ptr_fence
(
volatile
intptr_t
*
p
,
intptr_t
v
)
{
*
p
=
v
;
fence
();
}
inline
void
OrderAccess
::
release_store_ptr_fence
(
volatile
void
*
p
,
void
*
v
)
{
*
(
void
*
volatile
*
)
p
=
v
;
fence
();
}
...
...
src/os_cpu/windows_x86/vm/orderAccess_windows_x86.inline.hpp
浏览文件 @
271ef4f2
...
...
@@ -71,7 +71,7 @@ inline jushort OrderAccess::load_acquire(volatile jushort* p) { return *p; }
inline
juint
OrderAccess
::
load_acquire
(
volatile
juint
*
p
)
{
return
*
p
;
}
inline
julong
OrderAccess
::
load_acquire
(
volatile
julong
*
p
)
{
return
Atomic
::
load
((
volatile
jlong
*
)
p
);
}
inline
jfloat
OrderAccess
::
load_acquire
(
volatile
jfloat
*
p
)
{
return
*
p
;
}
inline
jdouble
OrderAccess
::
load_acquire
(
volatile
jdouble
*
p
)
{
return
*
p
;
}
inline
jdouble
OrderAccess
::
load_acquire
(
volatile
jdouble
*
p
)
{
return
jdouble_cast
(
Atomic
::
load
((
volatile
jlong
*
)
p
))
;
}
inline
intptr_t
OrderAccess
::
load_ptr_acquire
(
volatile
intptr_t
*
p
)
{
return
*
p
;
}
inline
void
*
OrderAccess
::
load_ptr_acquire
(
volatile
void
*
p
)
{
return
*
(
void
*
volatile
*
)
p
;
}
...
...
@@ -86,7 +86,7 @@ inline void OrderAccess::release_store(volatile jushort* p, jushort v) { *p
inline
void
OrderAccess
::
release_store
(
volatile
juint
*
p
,
juint
v
)
{
*
p
=
v
;
}
inline
void
OrderAccess
::
release_store
(
volatile
julong
*
p
,
julong
v
)
{
Atomic
::
store
((
jlong
)
v
,
(
volatile
jlong
*
)
p
);
}
inline
void
OrderAccess
::
release_store
(
volatile
jfloat
*
p
,
jfloat
v
)
{
*
p
=
v
;
}
inline
void
OrderAccess
::
release_store
(
volatile
jdouble
*
p
,
jdouble
v
)
{
*
p
=
v
;
}
inline
void
OrderAccess
::
release_store
(
volatile
jdouble
*
p
,
jdouble
v
)
{
release_store
((
volatile
jlong
*
)
p
,
jlong_cast
(
v
))
;
}
inline
void
OrderAccess
::
release_store_ptr
(
volatile
intptr_t
*
p
,
intptr_t
v
)
{
*
p
=
v
;
}
inline
void
OrderAccess
::
release_store_ptr
(
volatile
void
*
p
,
void
*
v
)
{
*
(
void
*
volatile
*
)
p
=
v
;
}
...
...
@@ -195,7 +195,7 @@ inline void OrderAccess::release_store_fence(volatile jushort* p, jushort v)
inline
void
OrderAccess
::
release_store_fence
(
volatile
juint
*
p
,
juint
v
)
{
release_store_fence
((
volatile
jint
*
)
p
,
(
jint
)
v
);
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
julong
*
p
,
julong
v
)
{
release_store_fence
((
volatile
jlong
*
)
p
,
(
jlong
)
v
);
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
jfloat
*
p
,
jfloat
v
)
{
*
p
=
v
;
fence
();
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
jdouble
*
p
,
jdouble
v
)
{
*
p
=
v
;
fence
(
);
}
inline
void
OrderAccess
::
release_store_fence
(
volatile
jdouble
*
p
,
jdouble
v
)
{
release_store_fence
((
volatile
jlong
*
)
p
,
jlong_cast
(
v
)
);
}
inline
void
OrderAccess
::
release_store_ptr_fence
(
volatile
intptr_t
*
p
,
intptr_t
v
)
{
#ifdef AMD64
...
...
src/share/vm/oops/method.cpp
浏览文件 @
271ef4f2
...
...
@@ -1163,6 +1163,7 @@ methodHandle Method::clone_with_new_data(methodHandle m, u_char* new_code, int n
newm
->
constMethod
()
->
set_constMethod_size
(
new_const_method_size
);
newm
->
set_method_size
(
new_method_size
);
assert
(
newm
->
code_size
()
==
new_code_length
,
"check"
);
assert
(
newm
->
method_parameters_length
()
==
method_parameters_len
,
"check"
);
assert
(
newm
->
checked_exceptions_length
()
==
checked_exceptions_len
,
"check"
);
assert
(
newm
->
exception_table_length
()
==
exception_table_len
,
"check"
);
assert
(
newm
->
localvariable_table_length
()
==
localvariable_len
,
"check"
);
...
...
@@ -1174,6 +1175,12 @@ methodHandle Method::clone_with_new_data(methodHandle m, u_char* new_code, int n
new_compressed_linenumber_table
,
new_compressed_linenumber_size
);
}
// Copy method_parameters
if
(
method_parameters_len
>
0
)
{
memcpy
(
newm
->
method_parameters_start
(),
m
->
method_parameters_start
(),
method_parameters_len
*
sizeof
(
MethodParametersElement
));
}
// Copy checked_exceptions
if
(
checked_exceptions_len
>
0
)
{
memcpy
(
newm
->
checked_exceptions_start
(),
...
...
test/runtime/jsig/Test8017498.sh
浏览文件 @
271ef4f2
...
...
@@ -26,8 +26,9 @@
##
## @test Test8017498.sh
## @bug 8017498
## @bug 8020791
## @summary sigaction(sig) results in process hang/timed-out if sig is much greater than SIGRTMAX
## @run shell Test8017498.sh
## @run shell
/timeout=30
Test8017498.sh
##
if
[
"
${
TESTSRC
}
"
=
""
]
...
...
@@ -46,17 +47,13 @@ case "$OS" in
echo
"Testing on Linux"
if
[
"
$VM_BITS
"
=
"64"
]
then
LD_PRELOAD
=
${
TESTJAVA
}${
FS
}
jre
${
FS
}
lib
${
FS
}
amd64
${
FS
}
libjsig.so
MY_
LD_PRELOAD
=
${
TESTJAVA
}${
FS
}
jre
${
FS
}
lib
${
FS
}
amd64
${
FS
}
libjsig.so
else
LD_PRELOAD
=
${
TESTJAVA
}${
FS
}
jre
${
FS
}
lib
${
FS
}
i386
${
FS
}
libjsig.so
MY_
LD_PRELOAD
=
${
TESTJAVA
}${
FS
}
jre
${
FS
}
lib
${
FS
}
i386
${
FS
}
libjsig.so
fi
echo
LD_PRELOAD
=
${
LD_PRELOAD
}
export
LD_PRELOAD
=
${
LD_PRELOAD
}
echo
MY_LD_PRELOAD
=
${
MY_LD_PRELOAD
}
;;
*
)
NULL
=
NUL
PS
=
";"
FS
=
"
\\
"
echo
"Test passed; only valid for Linux"
exit
0
;
;;
...
...
@@ -67,29 +64,29 @@ THIS_DIR=.
cp
${
TESTSRC
}${
FS
}*
.java
${
THIS_DIR
}
${
TESTJAVA
}${
FS
}
bin
${
FS
}
javac
*
.java
gcc
-fPIC
-shared
-o
${
TESTSRC
}${
FS
}
libTestJNI.so
-I
${
TESTJAVA
}${
FS
}
include
-I
${
TESTJAVA
}${
FS
}
include
${
FS
}
linux
${
TESTSRC
}${
FS
}
TestJNI.c
gcc
-DLINUX
-fPIC
-shared
\
-o
${
TESTSRC
}${
FS
}
libTestJNI.so
\
-I
${
TESTJAVA
}${
FS
}
include
\
-I
${
TESTJAVA
}${
FS
}
include
${
FS
}
linux
\
${
TESTSRC
}${
FS
}
TestJNI.c
if
[
$?
!=
0
]
then
echo
"WARNING: the gcc command failed."
2>&1
fi
# run the java test in the background
echo
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
-Djava
.library.path
=
${
TESTSRC
}${
FS
}
-server
TestJNI 100
>
test.out 2>&1 &
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
-Djava
.library.path
=
${
TESTSRC
}${
FS
}
-server
TestJNI 100
>
test.out 2>&1 &
# obtain the process id
C_PID
=
$!
cmd
=
"LD_PRELOAD=
$MY_LD_PRELOAD
\
${
TESTJAVA
}${
FS
}
bin
${
FS
}
java
\
-Djava.library.path=
${
TESTSRC
}${
FS
}
-server TestJNI 100"
echo
"
$cmd
> test.out 2>&1"
eval
$cmd
>
test.out 2>&1
# sleep for 1s
sleep
1
# reset LD_PRELOAD
unset
LD_PRELOAD
# check the output file (test.out)
grep
"old handler"
test.out
>
${
NULL
}
if
[
$?
=
0
]
then
echo
"Test Passed"
exit
0
else
kill
-9
${
C_PID
}
echo
"Test Failed"
exit
1
fi
echo
"Test Failed"
exit
1
test/runtime/jsig/TestJNI.c
浏览文件 @
271ef4f2
...
...
@@ -21,9 +21,9 @@
* questions.
*/
#define _GNU_SOURCE // for the definition of REG_RIP in ucontext.h
#include <stdio.h>
#include <jni.h>
#define __USE_GNU
#include <signal.h>
#include <sys/ucontext.h>
...
...
@@ -42,8 +42,6 @@ void sig_handler(int sig, siginfo_t *info, ucontext_t *context) {
JNIEXPORT
void
JNICALL
Java_TestJNI_doSomething
(
JNIEnv
*
env
,
jclass
klass
,
jint
val
)
{
struct
sigaction
act
;
struct
sigaction
oact
;
pthread_attr_t
attr
;
stack_t
stack
;
act
.
sa_flags
=
SA_ONSTACK
|
SA_RESTART
|
SA_SIGINFO
;
sigfillset
(
&
act
.
sa_mask
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录