equal
deleted
inserted
replaced
4250 return sigflags[sig]; |
4250 return sigflags[sig]; |
4251 } |
4251 } |
4252 |
4252 |
4253 void os::Linux::set_our_sigflags(int sig, int flags) { |
4253 void os::Linux::set_our_sigflags(int sig, int flags) { |
4254 assert(sig > 0 && sig < MAXSIGNUM, "vm signal out of expected range"); |
4254 assert(sig > 0 && sig < MAXSIGNUM, "vm signal out of expected range"); |
4255 sigflags[sig] = flags; |
4255 if (sig > 0 && sig < MAXSIGNUM) { |
|
4256 sigflags[sig] = flags; |
|
4257 } |
4256 } |
4258 } |
4257 |
4259 |
4258 void os::Linux::set_signal_handler(int sig, bool set_installed) { |
4260 void os::Linux::set_signal_handler(int sig, bool set_installed) { |
4259 // Check for overwrite. |
4261 // Check for overwrite. |
4260 struct sigaction oldAct; |
4262 struct sigaction oldAct; |
5925 */ |
5927 */ |
5926 const int core_pattern_len = 129; |
5928 const int core_pattern_len = 129; |
5927 char core_pattern[core_pattern_len] = {0}; |
5929 char core_pattern[core_pattern_len] = {0}; |
5928 |
5930 |
5929 int core_pattern_file = ::open("/proc/sys/kernel/core_pattern", O_RDONLY); |
5931 int core_pattern_file = ::open("/proc/sys/kernel/core_pattern", O_RDONLY); |
5930 if (core_pattern_file != -1) { |
5932 if (core_pattern_file == -1) { |
5931 ssize_t ret = ::read(core_pattern_file, core_pattern, core_pattern_len); |
|
5932 ::close(core_pattern_file); |
|
5933 |
|
5934 if (ret > 0) { |
|
5935 char *last_char = core_pattern + strlen(core_pattern) - 1; |
|
5936 |
|
5937 if (*last_char == '\n') { |
|
5938 *last_char = '\0'; |
|
5939 } |
|
5940 } |
|
5941 } |
|
5942 |
|
5943 if (strlen(core_pattern) == 0) { |
|
5944 return -1; |
5933 return -1; |
|
5934 } |
|
5935 |
|
5936 ssize_t ret = ::read(core_pattern_file, core_pattern, core_pattern_len); |
|
5937 ::close(core_pattern_file); |
|
5938 if (ret <= 0 || ret >= core_pattern_len || core_pattern[0] == '\n') { |
|
5939 return -1; |
|
5940 } |
|
5941 if (core_pattern[ret-1] == '\n') { |
|
5942 core_pattern[ret-1] = '\0'; |
|
5943 } else { |
|
5944 core_pattern[ret] = '\0'; |
5945 } |
5945 } |
5946 |
5946 |
5947 char *pid_pos = strstr(core_pattern, "%p"); |
5947 char *pid_pos = strstr(core_pattern, "%p"); |
5948 int written; |
5948 int written; |
5949 |
5949 |