1007 if (status == 0) { |
1007 if (status == 0) { |
1008 log_info(os, thread)("Thread started (tid: " UINTX_FORMAT ", attributes: %s). ", |
1008 log_info(os, thread)("Thread started (tid: " UINTX_FORMAT ", attributes: %s). ", |
1009 (uintx) tid, describe_thr_create_attributes(buf, sizeof(buf), stack_size, flags)); |
1009 (uintx) tid, describe_thr_create_attributes(buf, sizeof(buf), stack_size, flags)); |
1010 } else { |
1010 } else { |
1011 log_warning(os, thread)("Failed to start thread - thr_create failed (%s) for attributes: %s.", |
1011 log_warning(os, thread)("Failed to start thread - thr_create failed (%s) for attributes: %s.", |
1012 strerror(status), describe_thr_create_attributes(buf, sizeof(buf), stack_size, flags)); |
1012 os::errno_name(status), describe_thr_create_attributes(buf, sizeof(buf), stack_size, flags)); |
1013 } |
1013 } |
1014 |
1014 |
1015 if (status != 0) { |
1015 if (status != 0) { |
1016 thread->set_osthread(NULL); |
1016 thread->set_osthread(NULL); |
1017 // Need to clean up stuff we've allocated so far |
1017 // Need to clean up stuff we've allocated so far |
1352 |
1352 |
1353 // Must return millis since Jan 1 1970 for JVM_CurrentTimeMillis |
1353 // Must return millis since Jan 1 1970 for JVM_CurrentTimeMillis |
1354 jlong os::javaTimeMillis() { |
1354 jlong os::javaTimeMillis() { |
1355 timeval t; |
1355 timeval t; |
1356 if (gettimeofday(&t, NULL) == -1) { |
1356 if (gettimeofday(&t, NULL) == -1) { |
1357 fatal("os::javaTimeMillis: gettimeofday (%s)", strerror(errno)); |
1357 fatal("os::javaTimeMillis: gettimeofday (%s)", os::strerror(errno)); |
1358 } |
1358 } |
1359 return jlong(t.tv_sec) * 1000 + jlong(t.tv_usec) / 1000; |
1359 return jlong(t.tv_sec) * 1000 + jlong(t.tv_usec) / 1000; |
1360 } |
1360 } |
1361 |
1361 |
1362 void os::javaTimeSystemUTC(jlong &seconds, jlong &nanos) { |
1362 void os::javaTimeSystemUTC(jlong &seconds, jlong &nanos) { |
1363 timeval t; |
1363 timeval t; |
1364 if (gettimeofday(&t, NULL) == -1) { |
1364 if (gettimeofday(&t, NULL) == -1) { |
1365 fatal("os::javaTimeSystemUTC: gettimeofday (%s)", strerror(errno)); |
1365 fatal("os::javaTimeSystemUTC: gettimeofday (%s)", os::strerror(errno)); |
1366 } |
1366 } |
1367 seconds = jlong(t.tv_sec); |
1367 seconds = jlong(t.tv_sec); |
1368 nanos = jlong(t.tv_usec) * 1000; |
1368 nanos = jlong(t.tv_usec) * 1000; |
1369 } |
1369 } |
1370 |
1370 |
2159 // from src/solaris/hpi/src/system_md.c |
2159 // from src/solaris/hpi/src/system_md.c |
2160 |
2160 |
2161 size_t os::lasterror(char *buf, size_t len) { |
2161 size_t os::lasterror(char *buf, size_t len) { |
2162 if (errno == 0) return 0; |
2162 if (errno == 0) return 0; |
2163 |
2163 |
2164 const char *s = ::strerror(errno); |
2164 const char *s = os::strerror(errno); |
2165 size_t n = ::strlen(s); |
2165 size_t n = ::strlen(s); |
2166 if (n >= len) { |
2166 if (n >= len) { |
2167 n = len - 1; |
2167 n = len - 1; |
2168 } |
2168 } |
2169 ::strncpy(buf, s, n); |
2169 ::strncpy(buf, s, n); |
2368 |
2368 |
2369 static void warn_fail_commit_memory(char* addr, size_t bytes, bool exec, |
2369 static void warn_fail_commit_memory(char* addr, size_t bytes, bool exec, |
2370 int err) { |
2370 int err) { |
2371 warning("INFO: os::commit_memory(" PTR_FORMAT ", " SIZE_FORMAT |
2371 warning("INFO: os::commit_memory(" PTR_FORMAT ", " SIZE_FORMAT |
2372 ", %d) failed; error='%s' (errno=%d)", addr, bytes, exec, |
2372 ", %d) failed; error='%s' (errno=%d)", addr, bytes, exec, |
2373 strerror(err), err); |
2373 os::strerror(err), err); |
2374 } |
2374 } |
2375 |
2375 |
2376 static void warn_fail_commit_memory(char* addr, size_t bytes, |
2376 static void warn_fail_commit_memory(char* addr, size_t bytes, |
2377 size_t alignment_hint, bool exec, |
2377 size_t alignment_hint, bool exec, |
2378 int err) { |
2378 int err) { |
2379 warning("INFO: os::commit_memory(" PTR_FORMAT ", " SIZE_FORMAT |
2379 warning("INFO: os::commit_memory(" PTR_FORMAT ", " SIZE_FORMAT |
2380 ", " SIZE_FORMAT ", %d) failed; error='%s' (errno=%d)", addr, bytes, |
2380 ", " SIZE_FORMAT ", %d) failed; error='%s' (errno=%d)", addr, bytes, |
2381 alignment_hint, exec, strerror(err), err); |
2381 alignment_hint, exec, os::strerror(err), err); |
2382 } |
2382 } |
2383 |
2383 |
2384 int os::Solaris::commit_memory_impl(char* addr, size_t bytes, bool exec) { |
2384 int os::Solaris::commit_memory_impl(char* addr, size_t bytes, bool exec) { |
2385 int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE; |
2385 int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE; |
2386 size_t size = bytes; |
2386 size_t size = bytes; |
2757 |
2757 |
2758 if (PrintMiscellaneous && Verbose) { |
2758 if (PrintMiscellaneous && Verbose) { |
2759 char buf[256]; |
2759 char buf[256]; |
2760 buf[0] = '\0'; |
2760 buf[0] = '\0'; |
2761 if (addr == NULL) { |
2761 if (addr == NULL) { |
2762 jio_snprintf(buf, sizeof(buf), ": %s", strerror(err)); |
2762 jio_snprintf(buf, sizeof(buf), ": %s", os::strerror(err)); |
2763 } |
2763 } |
2764 warning("attempt_reserve_memory_at: couldn't reserve " SIZE_FORMAT " bytes at " |
2764 warning("attempt_reserve_memory_at: couldn't reserve " SIZE_FORMAT " bytes at " |
2765 PTR_FORMAT ": reserve_memory_helper returned " PTR_FORMAT |
2765 PTR_FORMAT ": reserve_memory_helper returned " PTR_FORMAT |
2766 "%s", bytes, requested_addr, addr, buf); |
2766 "%s", bytes, requested_addr, addr, buf); |
2767 } |
2767 } |
4371 |
4371 |
4372 init_random(1234567); |
4372 init_random(1234567); |
4373 |
4373 |
4374 page_size = sysconf(_SC_PAGESIZE); |
4374 page_size = sysconf(_SC_PAGESIZE); |
4375 if (page_size == -1) { |
4375 if (page_size == -1) { |
4376 fatal("os_solaris.cpp: os::init: sysconf failed (%s)", strerror(errno)); |
4376 fatal("os_solaris.cpp: os::init: sysconf failed (%s)", os::strerror(errno)); |
4377 } |
4377 } |
4378 init_page_sizes((size_t) page_size); |
4378 init_page_sizes((size_t) page_size); |
4379 |
4379 |
4380 Solaris::initialize_system_info(); |
4380 Solaris::initialize_system_info(); |
4381 |
4381 |
4383 // if we need them. |
4383 // if we need them. |
4384 Solaris::misc_sym_init(); |
4384 Solaris::misc_sym_init(); |
4385 |
4385 |
4386 int fd = ::open("/dev/zero", O_RDWR); |
4386 int fd = ::open("/dev/zero", O_RDWR); |
4387 if (fd < 0) { |
4387 if (fd < 0) { |
4388 fatal("os::init: cannot open /dev/zero (%s)", strerror(errno)); |
4388 fatal("os::init: cannot open /dev/zero (%s)", os::strerror(errno)); |
4389 } else { |
4389 } else { |
4390 Solaris::set_dev_zero_fd(fd); |
4390 Solaris::set_dev_zero_fd(fd); |
4391 |
4391 |
4392 // Close on exec, child won't inherit. |
4392 // Close on exec, child won't inherit. |
4393 fcntl(fd, F_SETFD, FD_CLOEXEC); |
4393 fcntl(fd, F_SETFD, FD_CLOEXEC); |