3899 extern "C" {
3900 static void perfMemory_exit_helper() {
3901 perfMemory_exit();
3902 }
3903 }
3904
3905 // this is called _after_ the global arguments have been parsed
3906 jint os::init_2(void) {
3907 // try to enable extended file IO ASAP, see 6431278
3908 os::Solaris::try_enable_extended_io();
3909
3910 // Check and sets minimum stack sizes against command line options
3911 if (Posix::set_minimum_stack_sizes() == JNI_ERR) {
3912 return JNI_ERR;
3913 }
3914
3915 Solaris::libthread_init();
3916
3917 if (UseNUMA) {
3918 if (!Solaris::liblgrp_init()) {
3919 UseNUMA = false;
3920 } else {
3921 size_t lgrp_limit = os::numa_get_groups_num();
3922 int *lgrp_ids = NEW_C_HEAP_ARRAY(int, lgrp_limit, mtInternal);
3923 size_t lgrp_num = os::numa_get_leaf_groups(lgrp_ids, lgrp_limit);
3924 FREE_C_HEAP_ARRAY(int, lgrp_ids);
3925 if (lgrp_num < 2) {
3926 // There's only one locality group, disable NUMA unless
3927 // user explicilty forces NUMA optimizations on single-node/UMA systems
3928 UseNUMA = ForceNUMA;
3929 }
3930 }
3931 }
3932
3933 Solaris::signal_sets_init();
3934 Solaris::init_signal_mem();
3935 Solaris::install_signal_handlers();
3936 // Initialize data for jdk.internal.misc.Signal
3937 if (!ReduceSignalUsage) {
3938 jdk_misc_signal_init();
3939 }
3940
3941 // initialize synchronization primitives to use either thread or
3942 // lwp synchronization (controlled by UseLWPSynchronization)
3943 Solaris::synchronization_init();
3944 DEBUG_ONLY(os::set_mutex_init_done();)
3945
3946 if (MaxFDLimit) {
3947 // set the number of file descriptors to max. print out error
3948 // if getrlimit/setrlimit fails but continue regardless.
3949 struct rlimit nbr_files;
3950 int status = getrlimit(RLIMIT_NOFILE, &nbr_files);
|
3899 extern "C" {
3900 static void perfMemory_exit_helper() {
3901 perfMemory_exit();
3902 }
3903 }
3904
3905 // this is called _after_ the global arguments have been parsed
3906 jint os::init_2(void) {
3907 // try to enable extended file IO ASAP, see 6431278
3908 os::Solaris::try_enable_extended_io();
3909
3910 // Check and sets minimum stack sizes against command line options
3911 if (Posix::set_minimum_stack_sizes() == JNI_ERR) {
3912 return JNI_ERR;
3913 }
3914
3915 Solaris::libthread_init();
3916
3917 if (UseNUMA) {
3918 if (!Solaris::liblgrp_init()) {
3919 FLAG_SET_ERGO(UseNUMA, false);
3920 } else {
3921 size_t lgrp_limit = os::numa_get_groups_num();
3922 int *lgrp_ids = NEW_C_HEAP_ARRAY(int, lgrp_limit, mtInternal);
3923 size_t lgrp_num = os::numa_get_leaf_groups(lgrp_ids, lgrp_limit);
3924 FREE_C_HEAP_ARRAY(int, lgrp_ids);
3925 if (lgrp_num < 2) {
3926 // There's only one locality group, disable NUMA unless
3927 // user explicilty forces NUMA optimizations on single-node/UMA systems
3928 UseNUMA = ForceNUMA;
3929 }
3930 }
3931 }
3932
3933 // When NUMA requested, not-NUMA-aware allocations default to interleaving.
3934 if (UseNUMA && !UseNUMAInterleaving) {
3935 FLAG_SET_ERGO_IF_DEFAULT(UseNUMAInterleaving, true);
3936 }
3937
3938 Solaris::signal_sets_init();
3939 Solaris::init_signal_mem();
3940 Solaris::install_signal_handlers();
3941 // Initialize data for jdk.internal.misc.Signal
3942 if (!ReduceSignalUsage) {
3943 jdk_misc_signal_init();
3944 }
3945
3946 // initialize synchronization primitives to use either thread or
3947 // lwp synchronization (controlled by UseLWPSynchronization)
3948 Solaris::synchronization_init();
3949 DEBUG_ONLY(os::set_mutex_init_done();)
3950
3951 if (MaxFDLimit) {
3952 // set the number of file descriptors to max. print out error
3953 // if getrlimit/setrlimit fails but continue regardless.
3954 struct rlimit nbr_files;
3955 int status = getrlimit(RLIMIT_NOFILE, &nbr_files);
|