mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-17 13:55:20 +00:00
Merge
This commit is contained in:
commit
29bb7c8a05
@ -455,6 +455,7 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
|
||||
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
ALWAYS_DEFINES_JDK="-DWIN32_LEAN_AND_MEAN -D_CRT_SECURE_NO_DEPRECATE \
|
||||
-D_CRT_NONSTDC_NO_DEPRECATE -DWIN32 -DIAL"
|
||||
ALWAYS_DEFINES_JVM="-DNOMINMAX"
|
||||
fi
|
||||
|
||||
###############################################################################
|
||||
|
||||
@ -65,8 +65,11 @@ else
|
||||
exeinvoke.c exestack-gap.c
|
||||
endif
|
||||
|
||||
BUILD_HOTSPOT_JTREG_EXECUTABLES_LIBS_exesigtest := -ljvm
|
||||
|
||||
ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
BUILD_HOTSPOT_JTREG_EXECUTABLES_CFLAGS_exeFPRegs := -MT
|
||||
BUILD_HOTSPOT_JTREG_EXCLUDE += exesigtest.c
|
||||
endif
|
||||
|
||||
$(eval $(call SetupTestFilesCompilation, BUILD_HOTSPOT_JTREG_LIBRARIES, \
|
||||
|
||||
@ -152,6 +152,13 @@ static jlong initial_time_count=0;
|
||||
|
||||
static int clock_tics_per_sec = 100;
|
||||
|
||||
// If the VM might have been created on the primordial thread, we need to resolve the
|
||||
// primordial thread stack bounds and check if the current thread might be the
|
||||
// primordial thread in places. If we know that the primordial thread is never used,
|
||||
// such as when the VM was created by one of the standard java launchers, we can
|
||||
// avoid this
|
||||
static bool suppress_primordial_thread_resolution = false;
|
||||
|
||||
// For diagnostics to print a message once. see run_periodic_checks
|
||||
static sigset_t check_signal_done;
|
||||
static bool check_signals = true;
|
||||
@ -917,6 +924,9 @@ void os::free_thread(OSThread* osthread) {
|
||||
|
||||
// Check if current thread is the primordial thread, similar to Solaris thr_main.
|
||||
bool os::is_primordial_thread(void) {
|
||||
if (suppress_primordial_thread_resolution) {
|
||||
return false;
|
||||
}
|
||||
char dummy;
|
||||
// If called before init complete, thread stack bottom will be null.
|
||||
// Can be called if fatal error occurs before initialization.
|
||||
@ -4933,7 +4943,11 @@ jint os::init_2(void) {
|
||||
if (Posix::set_minimum_stack_sizes() == JNI_ERR) {
|
||||
return JNI_ERR;
|
||||
}
|
||||
Linux::capture_initial_stack(JavaThread::stack_size_at_create());
|
||||
|
||||
suppress_primordial_thread_resolution = Arguments::created_by_java_launcher();
|
||||
if (!suppress_primordial_thread_resolution) {
|
||||
Linux::capture_initial_stack(JavaThread::stack_size_at_create());
|
||||
}
|
||||
|
||||
#if defined(IA32)
|
||||
workaround_expand_exec_shield_cs_limit();
|
||||
|
||||
@ -64,6 +64,10 @@ class G1CollectorState {
|
||||
// of the initial mark pause to the end of the Cleanup pause.
|
||||
bool _mark_or_rebuild_in_progress;
|
||||
|
||||
// The next bitmap is currently being cleared or about to be cleared. TAMS and bitmap
|
||||
// may be out of sync.
|
||||
bool _clearing_next_bitmap;
|
||||
|
||||
// Set during a full gc pause.
|
||||
bool _in_full_gc;
|
||||
|
||||
@ -76,6 +80,7 @@ public:
|
||||
_initiate_conc_mark_if_possible(false),
|
||||
|
||||
_mark_or_rebuild_in_progress(false),
|
||||
_clearing_next_bitmap(false),
|
||||
_in_full_gc(false) { }
|
||||
|
||||
// Phase setters
|
||||
@ -89,6 +94,7 @@ public:
|
||||
void set_initiate_conc_mark_if_possible(bool v) { _initiate_conc_mark_if_possible = v; }
|
||||
|
||||
void set_mark_or_rebuild_in_progress(bool v) { _mark_or_rebuild_in_progress = v; }
|
||||
void set_clearing_next_bitmap(bool v) { _clearing_next_bitmap = v; }
|
||||
|
||||
// Phase getters
|
||||
bool in_young_only_phase() const { return _in_young_only_phase && !_in_full_gc; }
|
||||
@ -102,6 +108,7 @@ public:
|
||||
bool initiate_conc_mark_if_possible() const { return _initiate_conc_mark_if_possible; }
|
||||
|
||||
bool mark_or_rebuild_in_progress() const { return _mark_or_rebuild_in_progress; }
|
||||
bool clearing_next_bitmap() const { return _clearing_next_bitmap; }
|
||||
|
||||
G1YCType yc_type() const {
|
||||
if (in_initial_mark_gc()) {
|
||||
|
||||
@ -50,6 +50,7 @@
|
||||
#include "gc/shared/taskqueue.inline.hpp"
|
||||
#include "gc/shared/vmGCOperations.hpp"
|
||||
#include "gc/shared/weakProcessor.hpp"
|
||||
#include "include/jvm.h"
|
||||
#include "logging/log.hpp"
|
||||
#include "memory/allocation.hpp"
|
||||
#include "memory/resourceArea.hpp"
|
||||
@ -372,7 +373,6 @@ G1ConcurrentMark::G1ConcurrentMark(G1CollectedHeap* g1h,
|
||||
_concurrent(false),
|
||||
_has_aborted(false),
|
||||
_restart_for_overflow(false),
|
||||
_concurrent_marking_in_progress(false),
|
||||
_gc_timer_cm(new (ResourceObj::C_HEAP, mtGC) ConcurrentGCTimer()),
|
||||
_gc_tracer_cm(new (ResourceObj::C_HEAP, mtGC) G1OldTracer()),
|
||||
|
||||
@ -492,6 +492,8 @@ G1ConcurrentMark::G1ConcurrentMark(G1CollectedHeap* g1h,
|
||||
}
|
||||
|
||||
void G1ConcurrentMark::reset() {
|
||||
_has_aborted = false;
|
||||
|
||||
reset_marking_for_restart();
|
||||
|
||||
// Reset all tasks, since different phases will use different number of active
|
||||
@ -505,10 +507,6 @@ void G1ConcurrentMark::reset() {
|
||||
_top_at_rebuild_starts[i] = NULL;
|
||||
_region_mark_stats[i].clear();
|
||||
}
|
||||
|
||||
// we need this to make sure that the flag is on during the evac
|
||||
// pause with initial mark piggy-backed
|
||||
set_concurrent_marking_in_progress();
|
||||
}
|
||||
|
||||
void G1ConcurrentMark::clear_statistics_in_region(uint region_idx) {
|
||||
@ -519,15 +517,7 @@ void G1ConcurrentMark::clear_statistics_in_region(uint region_idx) {
|
||||
_region_mark_stats[region_idx].clear();
|
||||
}
|
||||
|
||||
void G1ConcurrentMark::humongous_object_eagerly_reclaimed(HeapRegion* r) {
|
||||
assert_at_safepoint_on_vm_thread();
|
||||
|
||||
// Need to clear mark bit of the humongous object if already set and during a marking cycle.
|
||||
if (_next_mark_bitmap->is_marked(r->bottom())) {
|
||||
_next_mark_bitmap->clear(r->bottom());
|
||||
}
|
||||
|
||||
// Clear any statistics about the region gathered so far.
|
||||
void G1ConcurrentMark::clear_statistics(HeapRegion* r) {
|
||||
uint const region_idx = r->hrm_index();
|
||||
if (r->is_humongous()) {
|
||||
assert(r->is_starts_humongous(), "Got humongous continues region here");
|
||||
@ -540,6 +530,22 @@ void G1ConcurrentMark::humongous_object_eagerly_reclaimed(HeapRegion* r) {
|
||||
}
|
||||
}
|
||||
|
||||
void G1ConcurrentMark::humongous_object_eagerly_reclaimed(HeapRegion* r) {
|
||||
assert_at_safepoint_on_vm_thread();
|
||||
|
||||
// Need to clear mark bit of the humongous object.
|
||||
if (_next_mark_bitmap->is_marked(r->bottom())) {
|
||||
_next_mark_bitmap->clear(r->bottom());
|
||||
}
|
||||
|
||||
if (!_g1h->collector_state()->mark_or_rebuild_in_progress()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Clear any statistics about the region gathered so far.
|
||||
clear_statistics(r);
|
||||
}
|
||||
|
||||
void G1ConcurrentMark::reset_marking_for_restart() {
|
||||
_global_mark_stack.set_empty();
|
||||
|
||||
@ -577,19 +583,10 @@ void G1ConcurrentMark::set_concurrency_and_phase(uint active_tasks, bool concurr
|
||||
set_concurrency(active_tasks);
|
||||
|
||||
_concurrent = concurrent;
|
||||
// We propagate this to all tasks, not just the active ones.
|
||||
for (uint i = 0; i < _max_num_tasks; ++i) {
|
||||
_tasks[i]->set_concurrent(concurrent);
|
||||
}
|
||||
|
||||
if (concurrent) {
|
||||
set_concurrent_marking_in_progress();
|
||||
} else {
|
||||
// We currently assume that the concurrent flag has been set to
|
||||
// false before we start remark. At this point we should also be
|
||||
// in a STW phase.
|
||||
if (!concurrent) {
|
||||
// At this point we should be in a STW phase, and completed marking.
|
||||
assert_at_safepoint_on_vm_thread();
|
||||
assert(!concurrent_marking_in_progress(), "invariant");
|
||||
assert(out_of_regions(),
|
||||
"only way to get here: _finger: " PTR_FORMAT ", _heap_end: " PTR_FORMAT,
|
||||
p2i(_finger), p2i(_heap.end()));
|
||||
@ -601,7 +598,6 @@ void G1ConcurrentMark::reset_at_marking_complete() {
|
||||
// not doing marking.
|
||||
reset_marking_for_restart();
|
||||
_num_active_tasks = 0;
|
||||
clear_concurrent_marking_in_progress();
|
||||
}
|
||||
|
||||
G1ConcurrentMark::~G1ConcurrentMark() {
|
||||
@ -745,8 +741,6 @@ public:
|
||||
};
|
||||
|
||||
void G1ConcurrentMark::pre_initial_mark() {
|
||||
_has_aborted = false;
|
||||
|
||||
// Initialize marking structures. This has to be done in a STW phase.
|
||||
reset();
|
||||
|
||||
@ -954,6 +948,8 @@ void G1ConcurrentMark::concurrent_cycle_start() {
|
||||
}
|
||||
|
||||
void G1ConcurrentMark::concurrent_cycle_end() {
|
||||
_g1h->collector_state()->set_clearing_next_bitmap(false);
|
||||
|
||||
_g1h->trace_heap_after_gc(_gc_tracer_cm);
|
||||
|
||||
if (has_aborted()) {
|
||||
@ -987,6 +983,24 @@ void G1ConcurrentMark::mark_from_roots() {
|
||||
print_stats();
|
||||
}
|
||||
|
||||
void G1ConcurrentMark::verify_during_pause(G1HeapVerifier::G1VerifyType type, VerifyOption vo, const char* caller) {
|
||||
G1HeapVerifier* verifier = _g1h->verifier();
|
||||
|
||||
verifier->verify_region_sets_optional();
|
||||
|
||||
if (VerifyDuringGC) {
|
||||
GCTraceTime(Debug, gc, phases) trace(caller, _gc_timer_cm);
|
||||
|
||||
size_t const BufLen = 512;
|
||||
char buffer[BufLen];
|
||||
|
||||
jio_snprintf(buffer, BufLen, "During GC (%s)", caller);
|
||||
verifier->verify(type, vo, buffer);
|
||||
}
|
||||
|
||||
verifier->check_bitmaps(caller);
|
||||
}
|
||||
|
||||
class G1UpdateRemSetTrackingBeforeRebuild : public HeapRegionClosure {
|
||||
G1CollectedHeap* _g1h;
|
||||
G1ConcurrentMark* _cm;
|
||||
@ -1036,35 +1050,24 @@ void G1ConcurrentMark::remark() {
|
||||
return;
|
||||
}
|
||||
|
||||
if (VerifyDuringGC) {
|
||||
_g1h->verifier()->verify(G1HeapVerifier::G1VerifyRemark, VerifyOption_G1UsePrevMarking, "During GC (Remark before)");
|
||||
}
|
||||
_g1h->verifier()->check_bitmaps("Remark Start");
|
||||
|
||||
G1Policy* g1p = _g1h->g1_policy();
|
||||
g1p->record_concurrent_mark_remark_start();
|
||||
|
||||
double start = os::elapsedTime();
|
||||
|
||||
finalize_marking();
|
||||
verify_during_pause(G1HeapVerifier::G1VerifyRemark, VerifyOption_G1UsePrevMarking, "Remark before");
|
||||
|
||||
{
|
||||
GCTraceTime(Debug, gc, phases) trace("Finalize Marking", _gc_timer_cm);
|
||||
finalize_marking();
|
||||
}
|
||||
|
||||
double mark_work_end = os::elapsedTime();
|
||||
|
||||
weak_refs_work(false /* clear_all_soft_refs */);
|
||||
bool const mark_finished = !has_overflown();
|
||||
if (mark_finished) {
|
||||
weak_refs_work(false /* clear_all_soft_refs */);
|
||||
|
||||
if (has_overflown()) {
|
||||
// We overflowed. Restart concurrent marking.
|
||||
_restart_for_overflow = true;
|
||||
|
||||
// Verify the heap w.r.t. the previous marking bitmap.
|
||||
if (VerifyDuringGC) {
|
||||
_g1h->verifier()->verify(G1HeapVerifier::G1VerifyRemark, VerifyOption_G1UsePrevMarking, "During GC (Remark overflow)");
|
||||
}
|
||||
|
||||
// Clear the marking state because we will be restarting
|
||||
// marking due to overflowing the global mark stack.
|
||||
reset_marking_for_restart();
|
||||
} else {
|
||||
SATBMarkQueueSet& satb_mq_set = JavaThread::satb_mark_queue_set();
|
||||
// We're done with marking.
|
||||
// This is the end of the marking cycle, we're expected all
|
||||
@ -1085,13 +1088,25 @@ void G1ConcurrentMark::remark() {
|
||||
_g1h->num_regions(), cl.num_selected_for_rebuild());
|
||||
}
|
||||
|
||||
if (VerifyDuringGC) {
|
||||
_g1h->verifier()->verify(G1HeapVerifier::G1VerifyRemark, VerifyOption_G1UseNextMarking, "During GC (Remark after)");
|
||||
}
|
||||
_g1h->verifier()->check_bitmaps("Remark End");
|
||||
verify_during_pause(G1HeapVerifier::G1VerifyRemark, VerifyOption_G1UseNextMarking, "Remark after");
|
||||
|
||||
assert(!restart_for_overflow(), "sanity");
|
||||
// Completely reset the marking state since marking completed
|
||||
reset_at_marking_complete();
|
||||
} else {
|
||||
// We overflowed. Restart concurrent marking.
|
||||
_restart_for_overflow = true;
|
||||
|
||||
verify_during_pause(G1HeapVerifier::G1VerifyRemark, VerifyOption_G1UsePrevMarking, "Remark overflow");
|
||||
|
||||
// Clear the marking state because we will be restarting
|
||||
// marking due to overflowing the global mark stack.
|
||||
reset_marking_for_restart();
|
||||
}
|
||||
|
||||
{
|
||||
GCTraceTime(Debug, gc, phases)("Report Object Count");
|
||||
report_object_count();
|
||||
}
|
||||
|
||||
// Statistics
|
||||
@ -1101,9 +1116,6 @@ void G1ConcurrentMark::remark() {
|
||||
_remark_times.add((now - start) * 1000.0);
|
||||
|
||||
g1p->record_concurrent_mark_remark_end();
|
||||
|
||||
G1CMIsAliveClosure is_alive(_g1h);
|
||||
_gc_tracer_cm->report_object_count_after_gc(&is_alive);
|
||||
}
|
||||
|
||||
class G1CleanupTask : public AbstractGangTask {
|
||||
@ -1145,6 +1157,8 @@ class G1CleanupTask : public AbstractGangTask {
|
||||
_g1h->free_region(hr, _local_cleanup_list, false /* skip_remset */, false /* skip_hcc */, true /* locked */);
|
||||
}
|
||||
hr->clear_cardtable();
|
||||
_g1h->concurrent_mark()->clear_statistics_in_region(hr->hrm_index());
|
||||
log_trace(gc)("Reclaimed empty region %u (%s) bot " PTR_FORMAT, hr->hrm_index(), hr->get_short_type_str(), p2i(hr->bottom()));
|
||||
} else {
|
||||
hr->rem_set()->do_cleanup_work(_hrrs_cleanup_task);
|
||||
}
|
||||
@ -1198,6 +1212,7 @@ void G1ConcurrentMark::reclaim_empty_regions() {
|
||||
workers->run_task(&cl);
|
||||
|
||||
if (!empty_regions_list.is_empty()) {
|
||||
log_debug(gc)("Reclaimed %u empty regions", empty_regions_list.length());
|
||||
// Now print the empty regions list.
|
||||
G1HRPrinter* hrp = _g1h->hr_printer();
|
||||
if (hrp->is_active()) {
|
||||
@ -1220,28 +1235,19 @@ void G1ConcurrentMark::cleanup() {
|
||||
return;
|
||||
}
|
||||
|
||||
_g1h->verifier()->verify_region_sets_optional();
|
||||
|
||||
if (VerifyDuringGC) { // While rebuilding the remembered set we used the next marking...
|
||||
_g1h->verifier()->verify(G1HeapVerifier::G1VerifyCleanup, VerifyOption_G1UseNextMarking, "During GC (Cleanup before)");
|
||||
}
|
||||
_g1h->verifier()->check_bitmaps("Cleanup Start");
|
||||
|
||||
G1Policy* g1p = _g1h->g1_policy();
|
||||
g1p->record_concurrent_mark_cleanup_start();
|
||||
|
||||
double start = os::elapsedTime();
|
||||
|
||||
verify_during_pause(G1HeapVerifier::G1VerifyCleanup, VerifyOption_G1UseNextMarking, "Cleanup before");
|
||||
|
||||
{
|
||||
GCTraceTime(Debug, gc, phases)("Update Remembered Set Tracking After Rebuild");
|
||||
G1UpdateRemSetTrackingAfterRebuild cl(_g1h);
|
||||
_g1h->heap_region_iterate(&cl);
|
||||
}
|
||||
|
||||
double count_end = os::elapsedTime();
|
||||
double this_final_counting_time = (count_end - start);
|
||||
_total_cleanup_time += this_final_counting_time;
|
||||
|
||||
if (log_is_enabled(Trace, gc, liveness)) {
|
||||
G1PrintRegionLivenessInfoClosure cl("Post-Cleanup");
|
||||
_g1h->heap_region_iterate(&cl);
|
||||
@ -1254,33 +1260,13 @@ void G1ConcurrentMark::cleanup() {
|
||||
reclaim_empty_regions();
|
||||
}
|
||||
|
||||
{
|
||||
GCTraceTime(Debug, gc, phases)("Finalize Concurrent Mark Cleanup");
|
||||
_g1h->g1_policy()->record_concurrent_mark_cleanup_end();
|
||||
}
|
||||
|
||||
// Statistics.
|
||||
double end = os::elapsedTime();
|
||||
_cleanup_times.add((end - start) * 1000.0);
|
||||
|
||||
// Cleanup will have freed any regions completely full of garbage.
|
||||
// Update the soft reference policy with the new heap occupancy.
|
||||
Universe::update_heap_info_at_gc();
|
||||
|
||||
if (VerifyDuringGC) {
|
||||
_g1h->verifier()->verify(G1HeapVerifier::G1VerifyCleanup, VerifyOption_G1UsePrevMarking, "During GC (Cleanup after)");
|
||||
}
|
||||
|
||||
_g1h->verifier()->check_bitmaps("Cleanup End");
|
||||
|
||||
_g1h->verifier()->verify_region_sets_optional();
|
||||
|
||||
// We need to make this be a "collection" so any collection pause that
|
||||
// races with it goes around and waits for completeCleanup to finish.
|
||||
_g1h->increment_total_collections();
|
||||
|
||||
// Clean out dead classes and update Metaspace sizes.
|
||||
if (ClassUnloadingWithConcurrentMark) {
|
||||
GCTraceTime(Debug, gc, phases)("Purge Metaspace");
|
||||
ClassLoaderDataGraph::purge();
|
||||
}
|
||||
MetaspaceGC::compute_new_size();
|
||||
@ -1288,6 +1274,22 @@ void G1ConcurrentMark::cleanup() {
|
||||
// We reclaimed old regions so we should calculate the sizes to make
|
||||
// sure we update the old gen/space data.
|
||||
_g1h->g1mm()->update_sizes();
|
||||
|
||||
verify_during_pause(G1HeapVerifier::G1VerifyCleanup, VerifyOption_G1UsePrevMarking, "Cleanup after");
|
||||
|
||||
// We need to make this be a "collection" so any collection pause that
|
||||
// races with it goes around and waits for Cleanup to finish.
|
||||
_g1h->increment_total_collections();
|
||||
|
||||
// Local statistics
|
||||
double recent_cleanup_time = (os::elapsedTime() - start);
|
||||
_total_cleanup_time += recent_cleanup_time;
|
||||
_cleanup_times.add(recent_cleanup_time);
|
||||
|
||||
{
|
||||
GCTraceTime(Debug, gc, phases)("Finalize Concurrent Mark Cleanup");
|
||||
_g1h->g1_policy()->record_concurrent_mark_cleanup_end();
|
||||
}
|
||||
}
|
||||
|
||||
// Supporting Object and Oop closures for reference discovery
|
||||
@ -1502,16 +1504,6 @@ void G1CMRefProcTaskExecutor::execute(EnqueueTask& enq_task) {
|
||||
}
|
||||
|
||||
void G1ConcurrentMark::weak_refs_work(bool clear_all_soft_refs) {
|
||||
if (has_overflown()) {
|
||||
// Skip processing the discovered references if we have
|
||||
// overflown the global marking stack. Reference objects
|
||||
// only get discovered once so it is OK to not
|
||||
// de-populate the discovered reference lists. We could have,
|
||||
// but the only benefit would be that, when marking restarts,
|
||||
// less reference objects are discovered.
|
||||
return;
|
||||
}
|
||||
|
||||
ResourceMark rm;
|
||||
HandleMark hm;
|
||||
|
||||
@ -1630,10 +1622,16 @@ void G1ConcurrentMark::weak_refs_work(bool clear_all_soft_refs) {
|
||||
}
|
||||
}
|
||||
|
||||
void G1ConcurrentMark::report_object_count() {
|
||||
G1CMIsAliveClosure is_alive(_g1h);
|
||||
_gc_tracer_cm->report_object_count_after_gc(&is_alive);
|
||||
}
|
||||
|
||||
void G1ConcurrentMark::swap_mark_bitmaps() {
|
||||
G1CMBitMap* temp = _prev_mark_bitmap;
|
||||
_prev_mark_bitmap = _next_mark_bitmap;
|
||||
_next_mark_bitmap = temp;
|
||||
_g1h->collector_state()->set_clearing_next_bitmap(true);
|
||||
}
|
||||
|
||||
// Closure for marking entries in SATB buffers.
|
||||
@ -1732,8 +1730,6 @@ void G1ConcurrentMark::finalize_marking() {
|
||||
ResourceMark rm;
|
||||
HandleMark hm;
|
||||
|
||||
GCTraceTime(Debug, gc, phases) trace("Finalize Marking", _gc_timer_cm);
|
||||
|
||||
_g1h->ensure_parsability(false);
|
||||
|
||||
// this is remark, so we'll use up all active threads
|
||||
@ -2115,7 +2111,7 @@ void G1CMTask::regular_clock_call() {
|
||||
// If we are not concurrent (i.e. we're doing remark) we don't need
|
||||
// to check anything else. The other steps are only needed during
|
||||
// the concurrent marking phase.
|
||||
if (!_concurrent) {
|
||||
if (!_cm->concurrent()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2313,7 +2309,7 @@ void G1CMTask::drain_satb_buffers() {
|
||||
_draining_satb_buffers = false;
|
||||
|
||||
assert(has_aborted() ||
|
||||
_concurrent ||
|
||||
_cm->concurrent() ||
|
||||
satb_mq_set.completed_buffers_num() == 0, "invariant");
|
||||
|
||||
// again, this was a potentially expensive operation, decrease the
|
||||
@ -2468,7 +2464,6 @@ void G1CMTask::do_marking_step(double time_target_ms,
|
||||
bool do_termination,
|
||||
bool is_serial) {
|
||||
assert(time_target_ms >= 1.0, "minimum granularity is 1ms");
|
||||
assert(_concurrent == _cm->concurrent(), "they should be the same");
|
||||
|
||||
_start_time_ms = os::elapsedVTime() * 1000.0;
|
||||
|
||||
@ -2688,17 +2683,6 @@ void G1CMTask::do_marking_step(double time_target_ms,
|
||||
if (finished) {
|
||||
// We're all done.
|
||||
|
||||
if (_worker_id == 0) {
|
||||
// Let's allow task 0 to do this
|
||||
if (_concurrent) {
|
||||
assert(_cm->concurrent_marking_in_progress(), "invariant");
|
||||
// We need to set this to false before the next
|
||||
// safepoint. This way we ensure that the marking phase
|
||||
// doesn't observe any more heap expansions.
|
||||
_cm->clear_concurrent_marking_in_progress();
|
||||
}
|
||||
}
|
||||
|
||||
// We can now guarantee that the global stack is empty, since
|
||||
// all other tasks have finished. We separated the guarantees so
|
||||
// that, if a condition is false, we can immediately find out
|
||||
@ -2814,7 +2798,6 @@ G1CMTask::G1CMTask(uint worker_id,
|
||||
_elapsed_time_ms(0.0),
|
||||
_termination_time_ms(0.0),
|
||||
_termination_start_time_ms(0.0),
|
||||
_concurrent(false),
|
||||
_marking_step_diffs_ms()
|
||||
{
|
||||
guarantee(task_queue != NULL, "invariant");
|
||||
|
||||
@ -27,6 +27,7 @@
|
||||
|
||||
#include "gc/g1/g1ConcurrentMarkBitMap.hpp"
|
||||
#include "gc/g1/g1ConcurrentMarkObjArrayProcessor.hpp"
|
||||
#include "gc/g1/g1HeapVerifier.hpp"
|
||||
#include "gc/g1/g1RegionMarkStatsCache.hpp"
|
||||
#include "gc/g1/heapRegionSet.hpp"
|
||||
#include "gc/shared/taskqueue.hpp"
|
||||
@ -341,12 +342,6 @@ class G1ConcurrentMark : public CHeapObj<mtGC> {
|
||||
// another concurrent marking phase should start
|
||||
volatile bool _restart_for_overflow;
|
||||
|
||||
// This is true from the very start of concurrent marking until the
|
||||
// point when all the tasks complete their work. It is really used
|
||||
// to determine the points between the end of concurrent marking and
|
||||
// time of remark.
|
||||
volatile bool _concurrent_marking_in_progress;
|
||||
|
||||
ConcurrentGCTimer* _gc_timer_cm;
|
||||
|
||||
G1OldTracer* _gc_tracer_cm;
|
||||
@ -365,15 +360,23 @@ class G1ConcurrentMark : public CHeapObj<mtGC> {
|
||||
uint _num_concurrent_workers; // The number of marking worker threads we're using
|
||||
uint _max_concurrent_workers; // Maximum number of marking worker threads
|
||||
|
||||
void verify_during_pause(G1HeapVerifier::G1VerifyType type, VerifyOption vo, const char* caller);
|
||||
|
||||
void finalize_marking();
|
||||
|
||||
void weak_refs_work_parallel_part(BoolObjectClosure* is_alive, bool purged_classes);
|
||||
void weak_refs_work(bool clear_all_soft_refs);
|
||||
|
||||
void report_object_count();
|
||||
|
||||
void swap_mark_bitmaps();
|
||||
|
||||
void reclaim_empty_regions();
|
||||
|
||||
// Clear statistics gathered during the concurrent cycle for the given region after
|
||||
// it has been reclaimed.
|
||||
void clear_statistics(HeapRegion* r);
|
||||
|
||||
// Resets the global marking data structures, as well as the
|
||||
// task local ones; should be called during initial mark.
|
||||
void reset();
|
||||
@ -447,9 +450,6 @@ class G1ConcurrentMark : public CHeapObj<mtGC> {
|
||||
// true, periodically insert checks to see if this method should exit prematurely.
|
||||
void clear_bitmap(G1CMBitMap* bitmap, WorkGang* workers, bool may_yield);
|
||||
|
||||
// Clear statistics gathered during the concurrent cycle for the given region after
|
||||
// it has been reclaimed.
|
||||
void clear_statistics_in_region(uint region_idx);
|
||||
// Region statistics gathered during marking.
|
||||
G1RegionMarkStats* _region_mark_stats;
|
||||
// Top pointer for each region at the start of the rebuild remembered set process
|
||||
@ -468,6 +468,9 @@ public:
|
||||
// TARS for the given region during remembered set rebuilding.
|
||||
inline HeapWord* top_at_rebuild_start(uint region) const;
|
||||
|
||||
// Clear statistics gathered during the concurrent cycle for the given region after
|
||||
// it has been reclaimed.
|
||||
void clear_statistics_in_region(uint region_idx);
|
||||
// Notification for eagerly reclaimed regions to clean up.
|
||||
void humongous_object_eagerly_reclaimed(HeapRegion* r);
|
||||
// Manipulation of the global mark stack.
|
||||
@ -489,16 +492,6 @@ public:
|
||||
|
||||
G1CMRootRegions* root_regions() { return &_root_regions; }
|
||||
|
||||
bool concurrent_marking_in_progress() const {
|
||||
return _concurrent_marking_in_progress;
|
||||
}
|
||||
void set_concurrent_marking_in_progress() {
|
||||
_concurrent_marking_in_progress = true;
|
||||
}
|
||||
void clear_concurrent_marking_in_progress() {
|
||||
_concurrent_marking_in_progress = false;
|
||||
}
|
||||
|
||||
void concurrent_cycle_start();
|
||||
// Abandon current marking iteration due to a Full GC.
|
||||
void concurrent_cycle_abort();
|
||||
@ -697,12 +690,6 @@ private:
|
||||
// When this task got into the termination protocol
|
||||
double _termination_start_time_ms;
|
||||
|
||||
// True when the task is during a concurrent phase, false when it is
|
||||
// in the remark phase (so, in the latter case, we do not have to
|
||||
// check all the things that we have to check during the concurrent
|
||||
// phase, i.e. SATB buffer availability...)
|
||||
bool _concurrent;
|
||||
|
||||
TruncatedSeq _marking_step_diffs_ms;
|
||||
|
||||
// Updates the local fields after this task has claimed
|
||||
@ -746,8 +733,6 @@ public:
|
||||
// Clears all the fields that correspond to a claimed region.
|
||||
void clear_region_fields();
|
||||
|
||||
void set_concurrent(bool concurrent) { _concurrent = concurrent; }
|
||||
|
||||
// The main method of this class which performs a marking step
|
||||
// trying not to exceed the given duration. However, it might exit
|
||||
// prematurely, according to some conditions (i.e. SATB buffers are
|
||||
|
||||
@ -651,10 +651,8 @@ bool G1HeapVerifier::verify_bitmaps(const char* caller, HeapRegion* hr) {
|
||||
bool res_p = verify_no_bits_over_tams("prev", prev_bitmap, ptams, end);
|
||||
|
||||
bool res_n = true;
|
||||
// We reset mark_or_rebuild_in_progress() before we reset _cmThread->in_progress() and in this window
|
||||
// we do the clearing of the next bitmap concurrently. Thus, we can not verify the bitmap
|
||||
// if we happen to be in that state.
|
||||
if (_g1h->collector_state()->mark_or_rebuild_in_progress() || !_g1h->_cmThread->in_progress()) {
|
||||
// We cannot verify the next bitmap while we are about to clear it.
|
||||
if (!_g1h->collector_state()->clearing_next_bitmap()) {
|
||||
res_n = verify_no_bits_over_tams("next", next_bitmap, ntams, end);
|
||||
}
|
||||
if (!res_p || !res_n) {
|
||||
@ -666,7 +664,9 @@ bool G1HeapVerifier::verify_bitmaps(const char* caller, HeapRegion* hr) {
|
||||
}
|
||||
|
||||
void G1HeapVerifier::check_bitmaps(const char* caller, HeapRegion* hr) {
|
||||
if (!G1VerifyBitmaps) return;
|
||||
if (!G1VerifyBitmaps) {
|
||||
return;
|
||||
}
|
||||
|
||||
guarantee(verify_bitmaps(caller, hr), "bitmap verification");
|
||||
}
|
||||
@ -693,7 +693,9 @@ public:
|
||||
};
|
||||
|
||||
void G1HeapVerifier::check_bitmaps(const char* caller) {
|
||||
if (!G1VerifyBitmaps) return;
|
||||
if (!G1VerifyBitmaps) {
|
||||
return;
|
||||
}
|
||||
|
||||
G1VerifyBitmapClosure cl(caller, this);
|
||||
_g1h->heap_region_iterate(&cl);
|
||||
|
||||
@ -437,6 +437,7 @@ void G1Policy::record_full_collection_end() {
|
||||
collector_state()->set_initiate_conc_mark_if_possible(need_to_start_conc_mark("end of Full GC", 0));
|
||||
collector_state()->set_in_initial_mark_gc(false);
|
||||
collector_state()->set_mark_or_rebuild_in_progress(false);
|
||||
collector_state()->set_clearing_next_bitmap(false);
|
||||
|
||||
_short_lived_surv_rate_group->start_adding_regions();
|
||||
// also call this on any additional surv rate groups
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -247,6 +247,7 @@ inline void HeapRegion::note_start_of_marking() {
|
||||
|
||||
inline void HeapRegion::note_end_of_marking() {
|
||||
_prev_top_at_mark_start = _next_top_at_mark_start;
|
||||
_next_top_at_mark_start = bottom();
|
||||
_prev_marked_bytes = _next_marked_bytes;
|
||||
_next_marked_bytes = 0;
|
||||
}
|
||||
|
||||
@ -123,6 +123,10 @@ static inline void* index_oop_from_field_offset_long(oop p, jlong field_offset)
|
||||
assert_field_offset_sane(p, field_offset);
|
||||
jlong byte_offset = field_offset_to_byte_offset(field_offset);
|
||||
|
||||
if (p != NULL) {
|
||||
p = Access<>::resolve(p);
|
||||
}
|
||||
|
||||
if (sizeof(char*) == sizeof(jint)) { // (this constant folds!)
|
||||
return (address)p + (jint) byte_offset;
|
||||
} else {
|
||||
|
||||
@ -220,7 +220,8 @@ tier1_runtime = \
|
||||
-runtime/containers/ \
|
||||
sanity/ \
|
||||
testlibrary_tests/TestMutuallyExclusivePlatformPredicates.java \
|
||||
-:tier1_runtime_appcds_exclude
|
||||
-:tier1_runtime_appcds_exclude \
|
||||
-runtime/signal
|
||||
|
||||
hotspot_cds = \
|
||||
runtime/SharedArchiveFile/ \
|
||||
@ -263,7 +264,8 @@ hotspot_tier2_runtime = \
|
||||
-runtime/containers/ \
|
||||
-:tier1_runtime \
|
||||
-:tier1_serviceability \
|
||||
-:hotspot_tier2_runtime_platform_agnostic
|
||||
-:hotspot_tier2_runtime_platform_agnostic \
|
||||
-runtime/signal
|
||||
|
||||
hotspot_tier2_runtime_platform_agnostic = \
|
||||
runtime/SelectionResolution \
|
||||
|
||||
59
test/hotspot/jtreg/runtime/signal/README
Normal file
59
test/hotspot/jtreg/runtime/signal/README
Normal file
@ -0,0 +1,59 @@
|
||||
Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
|
||||
This code is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License version 2 only, as
|
||||
published by the Free Software Foundation.
|
||||
|
||||
This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
version 2 for more details (a copy is included in the LICENSE file that
|
||||
accompanied this code).
|
||||
|
||||
You should have received a copy of the GNU General Public License version
|
||||
2 along with this work; if not, write to the Free Software Foundation,
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
or visit www.oracle.com if you need additional information or have any
|
||||
questions.
|
||||
|
||||
|
||||
Briefly, the tests cover the following scenarios:
|
||||
1. prepre
|
||||
set signal handlers -> create JVM -> send signals -> destroy JVM -> check signal handlers were called
|
||||
|
||||
2. prepost
|
||||
set signal handlers -> create JVM -> destroy JVM -> send signals -> check signal handlers were called
|
||||
|
||||
3. postpre
|
||||
create JVM ->set signal handlers -> send signals -> destroy JVM -> check signal handlers were called
|
||||
|
||||
4. postpost
|
||||
create JVM -> set signal handlers -> destroy JVM -> send signals -> check signal handlers were called
|
||||
|
||||
There is one more scenario called 'nojvm'.
|
||||
In this case no jvm is created, so pure signal testing is done.
|
||||
|
||||
Signal handlers don't do anything, so the only fact that signal handler was called is checked.
|
||||
Also 2 different ways of setting signal handlers are tested: sigaction, sigset.
|
||||
|
||||
For 'postpre' and 'postpro' libjsig.so is used to chain signal handlers behind VM installed ones.
|
||||
|
||||
=> Current tests cover the following cases (don't count 'nojvm' scenario):
|
||||
1. Support for pre-installed signal handlers when the HotSpot VM is created.
|
||||
2. Support for signal handler installation after the HotSpot VM is created inside JNI code
|
||||
|
||||
|
||||
Notes:
|
||||
|
||||
SIGQUIT, SIGTERM, SIGINT, and SIGHUP signals cannot be chained.
|
||||
If the application needs to handle these signals, the -Xrs option needs
|
||||
to be specified. So, test these signals only with -Xrs flag.
|
||||
|
||||
On Linux and Mac OS X, SIGUSR2 is used to implement suspend and resume. So,
|
||||
don't test SIGUSR2 on Linux and Mac OS X.
|
||||
|
||||
SIGJVM1 and SIGJVM2 exist only on Solaris and are reserved for exclusive use
|
||||
by the JVM. So don't test SIGJVM1 and SIGJVM2.
|
||||
178
test/hotspot/jtreg/runtime/signal/SigTestDriver.java
Normal file
178
test/hotspot/jtreg/runtime/signal/SigTestDriver.java
Normal file
@ -0,0 +1,178 @@
|
||||
/*
|
||||
* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import jdk.test.lib.Platform;
|
||||
import jdk.test.lib.Utils;
|
||||
import jdk.test.lib.process.OutputAnalyzer;
|
||||
import jdk.test.lib.process.ProcessTools;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class SigTestDriver {
|
||||
public static void main(String[] args) {
|
||||
// No signal tests on Windows yet; so setting to no-op
|
||||
if (Platform.isWindows()) {
|
||||
System.out.println("SKIPPED: no signal tests on Windows, ignore.");
|
||||
return;
|
||||
}
|
||||
|
||||
// At least one argument should be specified
|
||||
if ( (args == null) || (args.length < 1) ) {
|
||||
throw new IllegalArgumentException("At lease one argument should be specified, the signal name");
|
||||
}
|
||||
|
||||
String signame = args[0];
|
||||
switch (signame) {
|
||||
case "SIGWAITING":
|
||||
case "SIGKILL":
|
||||
case "SIGSTOP": {
|
||||
System.out.println("SKIPPED: signals SIGWAITING, SIGKILL and SIGSTOP can't be tested, ignore.");
|
||||
return;
|
||||
}
|
||||
case "SIGUSR2": {
|
||||
if (Platform.isLinux()) {
|
||||
System.out.println("SKIPPED: SIGUSR2 can't be tested on Linux, ignore.");
|
||||
return;
|
||||
} else if (Platform.isOSX()) {
|
||||
System.out.println("SKIPPED: SIGUSR2 can't be tested on OS X, ignore.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Path test = Paths.get(System.getProperty("test.nativepath"))
|
||||
.resolve("sigtest")
|
||||
.toAbsolutePath();
|
||||
String envVar = Platform.isWindows() ? "PATH" :
|
||||
(Platform.isOSX() ? "DYLD_LIBRARY_PATH" : "LD_LIBRARY_PATH");
|
||||
|
||||
List<String> cmd = new ArrayList<>();
|
||||
Collections.addAll(cmd,
|
||||
test.toString(),
|
||||
"-sig",
|
||||
signame,
|
||||
"-mode",
|
||||
null, // modeIdx
|
||||
"-scenario",
|
||||
null // scenarioIdx
|
||||
);
|
||||
int modeIdx = 4;
|
||||
int scenarioIdx = 6;
|
||||
|
||||
// add external flags
|
||||
cmd.addAll(vmargs());
|
||||
|
||||
// add test specific arguments w/o signame
|
||||
cmd.addAll(Arrays.asList(args)
|
||||
.subList(1, args.length));
|
||||
|
||||
boolean passed = true;
|
||||
|
||||
for (String mode : new String[]{"sigset", "sigaction"}) {
|
||||
for (String scenario : new String[] {"nojvm", "prepre", "prepost", "postpre", "postpost"}) {
|
||||
cmd.set(modeIdx, mode);
|
||||
cmd.set(scenarioIdx, scenario);
|
||||
System.out.printf("START TESTING: SIGNAL = %s, MODE = %s, SCENARIO=%s%n",signame, mode, scenario);
|
||||
System.out.printf("Do execute: %s%n", cmd.toString());
|
||||
|
||||
ProcessBuilder pb = new ProcessBuilder(cmd);
|
||||
pb.environment().merge(envVar, jvmLibDir().toString(),
|
||||
(x, y) -> y + File.pathSeparator + x);
|
||||
pb.environment().put("CLASSPATH", Utils.TEST_CLASS_PATH);
|
||||
|
||||
switch (scenario) {
|
||||
case "postpre":
|
||||
case "postpost": {
|
||||
pb.environment().merge("LD_PRELOAD", libjsig().toString(),
|
||||
(x, y) -> y + File.pathSeparator + x);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
OutputAnalyzer oa = ProcessTools.executeProcess(pb);
|
||||
oa.reportDiagnosticSummary();
|
||||
int exitCode = oa.getExitValue();
|
||||
if (exitCode == 0) {
|
||||
System.out.println("PASSED with exit code 0");
|
||||
} else {
|
||||
System.out.println("FAILED with exit code " + exitCode);
|
||||
passed = false;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new Error("execution failed", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!passed) {
|
||||
throw new Error("test failed");
|
||||
}
|
||||
}
|
||||
|
||||
private static List<String> vmargs() {
|
||||
return Stream.concat(Arrays.stream(Utils.VM_OPTIONS.split(" ")),
|
||||
Arrays.stream(Utils.JAVA_OPTIONS.split(" ")))
|
||||
.filter(s -> !s.isEmpty())
|
||||
.filter(s -> s.startsWith("-X"))
|
||||
.flatMap(arg -> Stream.of("-vmopt", arg))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private static Path libjsig() {
|
||||
return jvmLibDir().resolve((Platform.isWindows() ? "" : "lib")
|
||||
+ "jsig." + Platform.sharedLibraryExt());
|
||||
}
|
||||
|
||||
private static Path jvmLibDir() {
|
||||
Path dir = Paths.get(Utils.TEST_JDK);
|
||||
if (Platform.isWindows()) {
|
||||
return dir.resolve("bin")
|
||||
.resolve(variant())
|
||||
.toAbsolutePath();
|
||||
} else {
|
||||
return dir.resolve("lib")
|
||||
.resolve(variant())
|
||||
.toAbsolutePath();
|
||||
}
|
||||
}
|
||||
|
||||
private static String variant() {
|
||||
if (Platform.isServer()) {
|
||||
return "server";
|
||||
} else if (Platform.isClient()) {
|
||||
return "client";
|
||||
} else if (Platform.isMinimal()) {
|
||||
return "minimal";
|
||||
} else {
|
||||
throw new Error("TESTBUG: unsupported vm variant");
|
||||
}
|
||||
}
|
||||
}
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigalrm.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigalrm.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigalrm01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGALRM
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigbus.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigbus.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigbus01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGBUS
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigcld.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigcld.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigcld01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGCLD
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigcont.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigcont.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigcont01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGCONT
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigemt.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigemt.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigemt01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGEMT
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigfpe.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigfpe.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigfpe01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGFPE
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigfreeze.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigfreeze.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigfreeze01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGFREEZE
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSighup.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSighup.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sighup01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGHUP -vmopt -XX:+PrintCommandLineFlags -vmopt -Xrs
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigill.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigill.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigill01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGILL
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigint.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigint.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigint01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGINT -vmopt -XX:+PrintCommandLineFlags -vmopt -Xrs
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigiot.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigiot.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigiot01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGIOT
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSiglost.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSiglost.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/siglost01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGLOST
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSiglwp.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSiglwp.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/siglwp01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGLWP
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigpipe.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigpipe.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigpipe01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGPIPE
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigpoll.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigpoll.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigpoll01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGPOLL
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigprof.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigprof.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigprof01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGPROF
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigpwr.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigpwr.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigpwr01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGPWR
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigquit.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigquit.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigquit01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGQUIT -vmopt -XX:+PrintCommandLineFlags -vmopt -Xrs
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigsegv.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigsegv.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigsegv01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGSEGV
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigstop.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigstop.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigstop01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGSTOP
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigsys.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigsys.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigsys01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGSYS
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigterm.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigterm.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigterm01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGTERM -vmopt -XX:+PrintCommandLineFlags -vmopt -Xrs
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigthaw.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigthaw.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigthaw01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGTHAW
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigtrap.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigtrap.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigtrap01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGTRAP
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigtstp.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigtstp.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigtstp01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGTSTP
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigttin.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigttin.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigttin01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGTTIN
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigttou.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigttou.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigttou01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGTTOU
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigurg.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigurg.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigurg01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGURG
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigusr1.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigusr1.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigusr101.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGUSR1
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigusr2.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigusr2.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigusr201.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGUSR2
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigvtalrm.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigvtalrm.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigvtalrm01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGVTALRM
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigwinch.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigwinch.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigwinch01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGWINCH
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigxcpu.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigxcpu.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigxcpu01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGXCPU
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigxfsz.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigxfsz.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigxfsz01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGXFSZ
|
||||
*/
|
||||
|
||||
35
test/hotspot/jtreg/runtime/signal/TestSigxres.java
Normal file
35
test/hotspot/jtreg/runtime/signal/TestSigxres.java
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @requires os.family != "windows"
|
||||
*
|
||||
* @summary converted from VM testbase runtime/signal/sigxres01.
|
||||
* VM testbase keywords: [signal, runtime, linux, solaris, macosx]
|
||||
*
|
||||
* @library /test/lib
|
||||
* @run main/native SigTestDriver SIGXRES
|
||||
*/
|
||||
|
||||
462
test/hotspot/jtreg/runtime/signal/exesigtest.c
Normal file
462
test/hotspot/jtreg/runtime/signal/exesigtest.c
Normal file
@ -0,0 +1,462 @@
|
||||
/*
|
||||
* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
#include <jni.h>
|
||||
#include <signal.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
|
||||
/*
|
||||
* This is the main program to test the signal chaining/ handling functionality
|
||||
* See bugs 6277077 and 6414402
|
||||
*/
|
||||
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
typedef int boolean;
|
||||
|
||||
static JNIEnv *env;
|
||||
static JavaVM *vm;
|
||||
|
||||
// static int sigid = 0;
|
||||
|
||||
// Define the test pass/ fail codes, may be we can use
|
||||
// nsk/share/native/native_consts.h in future
|
||||
static int TEST_PASSED=0;
|
||||
static int TEST_FAILED=1;
|
||||
|
||||
// This variable is used to notify whether signal has been received or not.
|
||||
static volatile sig_atomic_t sig_received = 0;
|
||||
|
||||
static char *mode = 0;
|
||||
static char *scenario = 0;
|
||||
static char *signal_name;
|
||||
static int signal_num = -1;
|
||||
|
||||
static JavaVMOption *options = 0;
|
||||
static int numOptions = 0;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int sigNum;
|
||||
const char* sigName;
|
||||
} signalDefinition;
|
||||
|
||||
static signalDefinition signals[] =
|
||||
{
|
||||
{SIGINT, "SIGINT"},
|
||||
{SIGQUIT, "SIGQUIT"},
|
||||
{SIGILL, "SIGILL"},
|
||||
{SIGTRAP, "SIGTRAP"},
|
||||
{SIGIOT, "SIGIOT"},
|
||||
#ifdef SIGEMT
|
||||
{SIGEMT, "SIGEMT"},
|
||||
#endif
|
||||
{SIGFPE, "SIGFPE"},
|
||||
{SIGBUS, "SIGBUS"},
|
||||
{SIGSEGV, "SIGSEGV"},
|
||||
{SIGSYS, "SIGSYS"},
|
||||
{SIGPIPE, "SIGPIPE"},
|
||||
{SIGALRM, "SIGALRM"},
|
||||
{SIGTERM, "SIGTERM"},
|
||||
{SIGUSR1, "SIGUSR1"},
|
||||
{SIGUSR2, "SIGUSR2"},
|
||||
#ifdef SIGCLD
|
||||
{SIGCLD, "SIGCLD"},
|
||||
#endif
|
||||
#ifdef SIGPWR
|
||||
{SIGPWR, "SIGPWR"},
|
||||
#endif
|
||||
{SIGWINCH, "SIGWINCH"},
|
||||
{SIGURG, "SIGURG"},
|
||||
#ifdef SIGPOLL
|
||||
{SIGPOLL, "SIGPOLL"},
|
||||
#endif
|
||||
{SIGSTOP, "SIGSTOP"},
|
||||
{SIGTSTP, "SIGTSTP"},
|
||||
{SIGCONT, "SIGCONT"},
|
||||
{SIGTTIN, "SIGTTIN"},
|
||||
{SIGTTOU, "SIGTTOU"},
|
||||
{SIGVTALRM, "SIGVTALRM"},
|
||||
{SIGPROF, "SIGPROF"},
|
||||
{SIGXCPU, "SIGXCPU"},
|
||||
{SIGXFSZ, "SIGXFSZ"},
|
||||
#ifdef SIGWAITING
|
||||
{SIGWAITING, "SIGWAITING"},
|
||||
#endif
|
||||
#ifdef SIGLWP
|
||||
{SIGLWP, "SIGLWP"},
|
||||
#endif
|
||||
#ifdef SIGFREEZE
|
||||
{SIGFREEZE, "SIGFREEZE"},
|
||||
#endif
|
||||
#ifdef SIGTHAW
|
||||
{SIGTHAW, "SIGTHAW"},
|
||||
#endif
|
||||
#ifdef SIGLOST
|
||||
{SIGLOST, "SIGLOST"},
|
||||
#endif
|
||||
#ifdef SIGXRES
|
||||
{SIGXRES, "SIGXRES"},
|
||||
#endif
|
||||
{SIGHUP, "SIGHUP"}
|
||||
};
|
||||
|
||||
boolean isSupportedSigScenario ()
|
||||
{
|
||||
if ( (!strcmp(scenario, "nojvm")) || (!strcmp(scenario, "prepre")) || (!strcmp(scenario, "prepost")) ||
|
||||
(!strcmp(scenario, "postpost")) || (!strcmp(scenario, "postpre")) )
|
||||
{
|
||||
// printf("%s is a supported scenario\n", scenario);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("ERROR: %s is not a supported scenario\n", scenario);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
boolean isSupportedSigMode ()
|
||||
{
|
||||
if ( (!strcmp(mode, "sigset")) || (!strcmp(mode, "sigaction")) )
|
||||
{
|
||||
// printf("%s is a supported mode\n", mode);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("ERROR: %s is not a supported mode\n", mode);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
int getSigNumBySigName(const char* sigName)
|
||||
{
|
||||
int signals_len, sigdef_len, total_sigs, i=0;
|
||||
|
||||
if (sigName == NULL) return -1;
|
||||
|
||||
signals_len = sizeof(signals);
|
||||
sigdef_len = sizeof(signalDefinition);
|
||||
total_sigs = signals_len / sigdef_len;
|
||||
for (i = 0; i < total_sigs; i++)
|
||||
{
|
||||
// printf("Inside for loop, i = %d\n", i);
|
||||
if (!strcmp(sigName, signals[i].sigName))
|
||||
return signals[i].sigNum;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
// signal handler
|
||||
void handler(int sig)
|
||||
{
|
||||
printf("%s: signal handler for signal %d has been processed\n", signal_name, signal_num);
|
||||
sig_received = 1;
|
||||
}
|
||||
|
||||
// Initialize VM with given options
|
||||
void initVM()
|
||||
{
|
||||
JavaVMInitArgs vm_args;
|
||||
int i =0;
|
||||
jint result;
|
||||
|
||||
vm_args.nOptions = numOptions;
|
||||
vm_args.version = JNI_VERSION_1_2;
|
||||
vm_args.ignoreUnrecognized = JNI_FALSE;
|
||||
vm_args.options = options;
|
||||
|
||||
/* try hardcoding options
|
||||
JavaVMOption option1[2];
|
||||
option1[0].optionString="-XX:+PrintCommandLineFlags";
|
||||
option1[1].optionString="-Xrs";
|
||||
*/
|
||||
vm_args.options=options;
|
||||
vm_args.nOptions=numOptions;
|
||||
|
||||
// Print the VM options in use
|
||||
printf("initVM: numOptions = %d\n", vm_args.nOptions);
|
||||
for (i = 0; i < vm_args.nOptions; i++)
|
||||
{
|
||||
printf("\tvm_args.options[%d].optionString = %s\n", i, vm_args.options[i].optionString);
|
||||
}
|
||||
|
||||
// Initialize VM with given options
|
||||
result = JNI_CreateJavaVM( &vm, (void **) &env, &vm_args );
|
||||
|
||||
// Did the VM initialize successfully ?
|
||||
if (result != 0)
|
||||
{
|
||||
printf("ERROR: cannot create Java VM.\n");
|
||||
exit(TEST_FAILED);
|
||||
}
|
||||
|
||||
(*vm)->AttachCurrentThread(vm, (void **) &env, (void *) 0);
|
||||
printf("initVM: JVM started and attached\n");
|
||||
}
|
||||
|
||||
// Function to set up signal handler
|
||||
void setSignalHandler()
|
||||
{
|
||||
int retval = 0 ;
|
||||
|
||||
if (!strcmp(mode, "sigaction"))
|
||||
{
|
||||
struct sigaction act;
|
||||
act.sa_handler = handler;
|
||||
sigemptyset(&act.sa_mask);
|
||||
act.sa_flags = 0;
|
||||
retval = sigaction(signal_num, &act, 0);
|
||||
if (retval != 0) {
|
||||
printf("ERROR: failed to set signal handler using function %s, error=%s\n", mode, strerror(errno));
|
||||
exit(TEST_FAILED);
|
||||
}
|
||||
} // end - dealing with sigaction
|
||||
else if (!strcmp(mode, "sigset"))
|
||||
{
|
||||
sigset(signal_num, handler);
|
||||
} // end dealing with sigset
|
||||
printf("%s: signal handler using function '%s' has been set\n", signal_name, mode);
|
||||
}
|
||||
|
||||
// Function to invoke given signal
|
||||
void invokeSignal()
|
||||
{
|
||||
int pid, retval;
|
||||
sigset_t new_set, old_set;
|
||||
|
||||
pid = getpid();
|
||||
retval = 0;
|
||||
|
||||
// we need to unblock the signal in case it was previously blocked by JVM
|
||||
// and as result inherited by child process
|
||||
// (this is at least the case for SIGQUIT in case -Xrs flag is not used).
|
||||
// Otherwise the test will timeout.
|
||||
sigemptyset(&new_set);
|
||||
sigaddset(&new_set, signal_num);
|
||||
sigprocmask(SIG_UNBLOCK, &new_set, &old_set);
|
||||
if (retval != 0) {
|
||||
printf("ERROR: failed to unblock signal, error=%s\n", strerror(errno));
|
||||
exit(TEST_FAILED);
|
||||
}
|
||||
|
||||
// send the signal
|
||||
retval = kill(pid, signal_num);
|
||||
if (retval != 0)
|
||||
{
|
||||
printf("ERROR: failed to send signal %s, error=%s\n", signal_name, strerror(errno));
|
||||
exit(TEST_FAILED);
|
||||
}
|
||||
|
||||
// set original mask for the signal
|
||||
retval = sigprocmask(SIG_SETMASK, &old_set, NULL);
|
||||
if (retval != 0) {
|
||||
printf("ERROR: failed to set original mask for signal, error=%s\n", strerror(errno));
|
||||
exit(TEST_FAILED);
|
||||
}
|
||||
|
||||
printf("%s: signal has been sent successfully\n", signal_name);
|
||||
}
|
||||
|
||||
// Usage function
|
||||
void printUsage()
|
||||
{
|
||||
printf("Usage: sigtest -sig {signal_name} -mode {signal | sigset | sigaction } -scenario {nojvm | postpre | postpost | prepre | prepost}> [-vmopt jvm_option] \n");
|
||||
printf("\n");
|
||||
exit(TEST_FAILED);
|
||||
}
|
||||
|
||||
// signal handler BEFORE VM initialization AND
|
||||
// Invoke signal BEFORE VM exits
|
||||
void scen_prepre()
|
||||
{
|
||||
setSignalHandler();
|
||||
initVM();
|
||||
invokeSignal();
|
||||
(*vm)->DestroyJavaVM(vm);
|
||||
}
|
||||
|
||||
// signal handler BEFORE VM initialization AND
|
||||
// Invoke signal AFTER VM exits
|
||||
void scen_prepost()
|
||||
{
|
||||
setSignalHandler();
|
||||
initVM();
|
||||
(*vm)->DestroyJavaVM(vm);
|
||||
invokeSignal();
|
||||
}
|
||||
|
||||
// signal handler AFTER VM initialization AND
|
||||
// Invoke signal BEFORE VM exits
|
||||
void scen_postpre()
|
||||
{
|
||||
initVM();
|
||||
setSignalHandler();
|
||||
invokeSignal();
|
||||
(*vm)->DestroyJavaVM(vm);
|
||||
}
|
||||
|
||||
// signal handler AFTER VM initializationAND
|
||||
// Invoke signal AFTER VM exits
|
||||
void scen_postpost()
|
||||
{
|
||||
initVM();
|
||||
setSignalHandler();
|
||||
(*vm)->DestroyJavaVM(vm);
|
||||
invokeSignal();
|
||||
}
|
||||
|
||||
// signal handler with no JVM in picture
|
||||
void scen_nojvm()
|
||||
{
|
||||
setSignalHandler();
|
||||
invokeSignal();
|
||||
}
|
||||
|
||||
void run()
|
||||
{
|
||||
// print the current scenario
|
||||
if (!strcmp(scenario, "postpre"))
|
||||
scen_postpre();
|
||||
else if (!strcmp(scenario, "postpost"))
|
||||
scen_postpost();
|
||||
else if (!strcmp(scenario, "prepre"))
|
||||
scen_prepre();
|
||||
else if (!strcmp(scenario, "prepost"))
|
||||
scen_prepost();
|
||||
else if (!strcmp(scenario, "nojvm"))
|
||||
scen_nojvm();
|
||||
}
|
||||
|
||||
// main main
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i=0, j;
|
||||
|
||||
signal_num = -1;
|
||||
signal_name = NULL;
|
||||
|
||||
// Parse the arguments and find out how many vm args we have
|
||||
for (i=1; i<argc; i++)
|
||||
{
|
||||
if (! strcmp(argv[i], "-sig") )
|
||||
{
|
||||
i++;
|
||||
if ( i >= argc )
|
||||
{
|
||||
printUsage();
|
||||
}
|
||||
signal_name = argv[i];
|
||||
|
||||
}
|
||||
else if (!strcmp(argv[i], "-mode"))
|
||||
{
|
||||
i++;
|
||||
if ( i >= argc )
|
||||
{
|
||||
printUsage();
|
||||
}
|
||||
mode = argv[i];
|
||||
}
|
||||
else if (!strcmp(argv[i], "-scenario"))
|
||||
{
|
||||
i++;
|
||||
if ( i >= argc )
|
||||
{
|
||||
printUsage();
|
||||
}
|
||||
scenario = argv[i];
|
||||
}
|
||||
else if (!strcmp(argv[i], "-vmopt"))
|
||||
{
|
||||
i++;
|
||||
if ( i >= argc )
|
||||
{
|
||||
printUsage();
|
||||
}
|
||||
numOptions++;
|
||||
}
|
||||
else
|
||||
{
|
||||
printUsage();
|
||||
}
|
||||
}
|
||||
|
||||
if ( !isSupportedSigScenario() || !isSupportedSigMode() )
|
||||
{
|
||||
printUsage();
|
||||
}
|
||||
|
||||
// get signal number by it's name
|
||||
signal_num = getSigNumBySigName(signal_name);
|
||||
if (signal_num == -1)
|
||||
{
|
||||
printf("%s: unknown signal, perhaps is not supported on this platform, ignore\n",
|
||||
signal_name);
|
||||
exit(TEST_PASSED);
|
||||
}
|
||||
|
||||
j = 0;
|
||||
// Initialize given number of VM options
|
||||
if (numOptions > 0)
|
||||
{
|
||||
options = (JavaVMOption *) malloc(numOptions * sizeof(JavaVMOption));
|
||||
for (i=0; i<argc; i++)
|
||||
{
|
||||
// parse VM options
|
||||
if (!strcmp(argv[i], "-vmopt"))
|
||||
{
|
||||
i++;
|
||||
if ( i >= argc )
|
||||
{
|
||||
printUsage();
|
||||
}
|
||||
options[j].optionString = argv[i];
|
||||
j++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// do signal invocation
|
||||
printf("%s: start testing: signal_num=%d, mode=%s, scenario=%s\n", signal_name, signal_num, mode, scenario);
|
||||
run();
|
||||
|
||||
while (!sig_received) {
|
||||
sleep(1);
|
||||
printf("%s: waiting for getting signal 1sec ...\n", signal_name);
|
||||
}
|
||||
|
||||
printf("%s: signal has been received\n", signal_name);
|
||||
|
||||
free(options);
|
||||
|
||||
return (sig_received ? TEST_PASSED : TEST_FAILED);
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user