64 case 0:
65 jio_snprintf(buffer, bufferSize, "Core dumps have been disabled. To enable core dumping, try \"ulimit -c unlimited\" before starting Java again");
66 success = false;
67 break;
68 default:
69 jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d (max size %lu kB). To ensure a full core dump, try \"ulimit -c unlimited\" before starting Java again", current_process_id(), (unsigned long)(rlim.rlim_cur >> 10));
70 success = true;
71 break;
72 }
73 }
74 VMError::report_coredump_status(buffer, success);
75 }
76
77 int os::get_native_stack(address* stack, int frames, int toSkip) {
78 #ifdef _NMT_NOINLINE_
79 toSkip++;
80 #endif
81
82 int frame_idx = 0;
83 int num_of_frames; // number of frames captured
84 frame fr = os::current_frame();
85 while (fr.pc() && frame_idx < frames) {
86 if (toSkip > 0) {
87 toSkip --;
88 } else {
89 stack[frame_idx ++] = fr.pc();
90 }
91 if (fr.fp() == NULL || os::is_first_C_frame(&fr)
92 ||fr.sender_pc() == NULL || fr.cb() != NULL) break;
93
94 if (fr.sender_pc() && !os::is_first_C_frame(&fr)) {
95 fr = os::get_sender_for_C_frame(&fr);
96 } else {
97 break;
98 }
99 }
100 num_of_frames = frame_idx;
101 for (; frame_idx < frames; frame_idx ++) {
102 stack[frame_idx] = NULL;
103 }
104
105 return num_of_frames;
106 }
107
108
109 bool os::unsetenv(const char* name) {
110 assert(name != NULL, "Null pointer");
111 return (::unsetenv(name) == 0);
112 }
113
114 int os::get_last_error() {
115 return errno;
|
64 case 0:
65 jio_snprintf(buffer, bufferSize, "Core dumps have been disabled. To enable core dumping, try \"ulimit -c unlimited\" before starting Java again");
66 success = false;
67 break;
68 default:
69 jio_snprintf(buffer + n, bufferSize - n, "/core or core.%d (max size %lu kB). To ensure a full core dump, try \"ulimit -c unlimited\" before starting Java again", current_process_id(), (unsigned long)(rlim.rlim_cur >> 10));
70 success = true;
71 break;
72 }
73 }
74 VMError::report_coredump_status(buffer, success);
75 }
76
77 int os::get_native_stack(address* stack, int frames, int toSkip) {
78 #ifdef _NMT_NOINLINE_
79 toSkip++;
80 #endif
81
82 int frame_idx = 0;
83 int num_of_frames; // number of frames captured
84 Thread* thread = Thread::current();
85 frame fr = os::current_frame();
86 while (fr.pc() && frame_idx < frames) {
87 if (toSkip > 0) {
88 toSkip --;
89 } else {
90 stack[frame_idx ++] = fr.pc();
91 }
92 if (fr.fp() == NULL || os::is_first_C_frame(&fr)
93 ||fr.sender_pc() == NULL || fr.cb() != NULL) break;
94
95 if (fr.sender_pc() && !os::is_first_C_frame(&fr)) {
96 fr = os::get_sender_for_C_frame(thread, &fr);
97 } else {
98 break;
99 }
100 }
101 num_of_frames = frame_idx;
102 for (; frame_idx < frames; frame_idx ++) {
103 stack[frame_idx] = NULL;
104 }
105
106 return num_of_frames;
107 }
108
109
110 bool os::unsetenv(const char* name) {
111 assert(name != NULL, "Null pointer");
112 return (::unsetenv(name) == 0);
113 }
114
115 int os::get_last_error() {
116 return errno;
|