| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/globals.h" | 5 #include "vm/globals.h" |
| 6 #if defined(TARGET_OS_LINUX) | 6 #if defined(TARGET_OS_OPENBSD) |
| 7 | 7 |
| 8 #include "vm/os.h" | 8 #include "vm/os.h" |
| 9 | 9 |
| 10 #include <errno.h> // NOLINT | 10 #include <errno.h> // NOLINT |
| 11 #include <limits.h> // NOLINT | 11 #include <limits.h> // NOLINT |
| 12 #include <malloc.h> // NOLINT | 12 #include <stdlib.h> // NOLINT |
| 13 #include <time.h> // NOLINT | 13 #include <time.h> // NOLINT |
| 14 #include <sys/resource.h> // NOLINT | 14 #include <sys/resource.h> // NOLINT |
| 15 #include <sys/time.h> // NOLINT | 15 #include <sys/time.h> // NOLINT |
| 16 #include <sys/types.h> // NOLINT | 16 #include <sys/types.h> // NOLINT |
| 17 #include <sys/syscall.h> // NOLINT | |
| 18 #include <sys/stat.h> // NOLINT | 17 #include <sys/stat.h> // NOLINT |
| 19 #include <fcntl.h> // NOLINT | 18 #include <fcntl.h> // NOLINT |
| 20 #include <unistd.h> // NOLINT | 19 #include <unistd.h> // NOLINT |
| 21 | 20 |
| 22 #include "platform/utils.h" | 21 #include "platform/utils.h" |
| 23 #include "vm/code_observers.h" | 22 #include "vm/code_observers.h" |
| 24 #include "vm/dart.h" | 23 #include "vm/dart.h" |
| 25 #include "vm/debuginfo.h" | 24 #include "vm/debuginfo.h" |
| 26 #include "vm/isolate.h" | 25 #include "vm/isolate.h" |
| 27 #include "vm/lockers.h" | 26 #include "vm/lockers.h" |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 #elif defined(TARGET_ARCH_ARM64) | 251 #elif defined(TARGET_ARCH_ARM64) |
| 253 return kElfMachARM64; | 252 return kElfMachARM64; |
| 254 #elif defined(TARGET_ARCH_MIPS) | 253 #elif defined(TARGET_ARCH_MIPS) |
| 255 return kElfMachMIPS; | 254 return kElfMachMIPS; |
| 256 #else | 255 #else |
| 257 #error Unknown architecture. | 256 #error Unknown architecture. |
| 258 #endif | 257 #endif |
| 259 } | 258 } |
| 260 | 259 |
| 261 pid_t gettid() { | 260 pid_t gettid() { |
| 262 // libc doesn't wrap the Linux-specific gettid system call. | |
| 263 // Note that this thread id is not the same as the posix thread id. | 261 // Note that this thread id is not the same as the posix thread id. |
| 264 return syscall(SYS_gettid); | 262 return getthrid(); |
| 265 } | 263 } |
| 266 | 264 |
| 267 uint64_t GetKernelTimeNanos() { | 265 uint64_t GetKernelTimeNanos() { |
| 268 if (clock_id_ != kInvalidClockId) { | 266 if (clock_id_ != kInvalidClockId) { |
| 269 struct timespec ts; | 267 struct timespec ts; |
| 270 int r = clock_gettime(clock_id_, &ts); | 268 int r = clock_gettime(clock_id_, &ts); |
| 271 ASSERT(r == 0); | 269 ASSERT(r == 0); |
| 272 uint64_t nanos = static_cast<uint64_t>(ts.tv_sec) * | 270 uint64_t nanos = static_cast<uint64_t>(ts.tv_sec) * |
| 273 static_cast<uint64_t>(kNanosecondsPerSecond); | 271 static_cast<uint64_t>(kNanosecondsPerSecond); |
| 274 nanos += static_cast<uint64_t>(ts.tv_nsec); | 272 nanos += static_cast<uint64_t>(ts.tv_nsec); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 | 328 |
| 331 void* out_file_; | 329 void* out_file_; |
| 332 int clock_fd_; | 330 int clock_fd_; |
| 333 int clock_id_; | 331 int clock_id_; |
| 334 uint64_t code_sequence_; | 332 uint64_t code_sequence_; |
| 335 DISALLOW_COPY_AND_ASSIGN(JitdumpCodeObserver); | 333 DISALLOW_COPY_AND_ASSIGN(JitdumpCodeObserver); |
| 336 }; | 334 }; |
| 337 | 335 |
| 338 | 336 |
| 339 const char* OS::Name() { | 337 const char* OS::Name() { |
| 340 return "linux"; | 338 return "openbsd"; |
| 341 } | 339 } |
| 342 | 340 |
| 343 | 341 |
| 344 intptr_t OS::ProcessId() { | 342 intptr_t OS::ProcessId() { |
| 345 return static_cast<intptr_t>(getpid()); | 343 return static_cast<intptr_t>(getpid()); |
| 346 } | 344 } |
| 347 | 345 |
| 348 | 346 |
| 349 static bool LocalTime(int64_t seconds_since_epoch, tm* tm_result) { | 347 static bool LocalTime(int64_t seconds_since_epoch, tm* tm_result) { |
| 350 time_t seconds = static_cast<time_t>(seconds_since_epoch); | 348 time_t seconds = static_cast<time_t>(seconds_since_epoch); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 407 result *= kMicrosecondsPerSecond; | 405 result *= kMicrosecondsPerSecond; |
| 408 result += (ts.tv_nsec / kNanosecondsPerMicrosecond); | 406 result += (ts.tv_nsec / kNanosecondsPerMicrosecond); |
| 409 return result; | 407 return result; |
| 410 } | 408 } |
| 411 | 409 |
| 412 | 410 |
| 413 void* OS::AlignedAllocate(intptr_t size, intptr_t alignment) { | 411 void* OS::AlignedAllocate(intptr_t size, intptr_t alignment) { |
| 414 const int kMinimumAlignment = 16; | 412 const int kMinimumAlignment = 16; |
| 415 ASSERT(Utils::IsPowerOfTwo(alignment)); | 413 ASSERT(Utils::IsPowerOfTwo(alignment)); |
| 416 ASSERT(alignment >= kMinimumAlignment); | 414 ASSERT(alignment >= kMinimumAlignment); |
| 417 void* p = memalign(alignment, size); | 415 void* p = NULL; |
| 418 if (p == NULL) { | 416 if (posix_memalign(&p, alignment, size)) { |
| 419 UNREACHABLE(); | 417 UNREACHABLE(); |
| 420 } | 418 } |
| 421 return p; | 419 return p; |
| 422 } | 420 } |
| 423 | 421 |
| 424 | 422 |
| 425 void OS::AlignedFree(void* ptr) { | 423 void OS::AlignedFree(void* ptr) { |
| 426 free(ptr); | 424 free(ptr); |
| 427 } | 425 } |
| 428 | 426 |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 646 abort(); | 644 abort(); |
| 647 } | 645 } |
| 648 | 646 |
| 649 | 647 |
| 650 void OS::Exit(int code) { | 648 void OS::Exit(int code) { |
| 651 exit(code); | 649 exit(code); |
| 652 } | 650 } |
| 653 | 651 |
| 654 } // namespace dart | 652 } // namespace dart |
| 655 | 653 |
| 656 #endif // defined(TARGET_OS_LINUX) | 654 #endif // defined(TARGET_OS_OPENBSD) |
| OLD | NEW |