| 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 #if !defined(DART_IO_DISABLED) | 5 #if !defined(DART_IO_DISABLED) |
| 6 | 6 |
| 7 #include "platform/globals.h" | 7 #include "platform/globals.h" |
| 8 #if defined(HOST_OS_ANDROID) | 8 #if defined(HOST_OS_ANDROID) |
| 9 | 9 |
| 10 #include "bin/process.h" | 10 #include "bin/process.h" |
| (...skipping 869 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 880 void Process::TerminateExitCodeHandler() { | 880 void Process::TerminateExitCodeHandler() { |
| 881 ExitCodeHandler::TerminateExitCodeThread(); | 881 ExitCodeHandler::TerminateExitCodeThread(); |
| 882 } | 882 } |
| 883 | 883 |
| 884 | 884 |
| 885 intptr_t Process::CurrentProcessId() { | 885 intptr_t Process::CurrentProcessId() { |
| 886 return static_cast<intptr_t>(getpid()); | 886 return static_cast<intptr_t>(getpid()); |
| 887 } | 887 } |
| 888 | 888 |
| 889 | 889 |
| 890 intptr_t Process::CurrentRSS() { |
| 891 // The second value in /proc/self/statm is the current RSS in pages. |
| 892 File* statm = File::Open("/proc/self/statm", File::kRead); |
| 893 if (statm == NULL) { |
| 894 return -1; |
| 895 } |
| 896 RefCntReleaseScope<File> releaser(statm); |
| 897 const intptr_t statm_length = 1 * KB; |
| 898 void* buffer = reinterpret_cast<void*>(Dart_ScopeAllocate(statm_length)); |
| 899 const intptr_t statm_read = statm->Read(buffer, statm_length); |
| 900 if (statm_read <= 0) { |
| 901 return -1; |
| 902 } |
| 903 intptr_t current_rss_pages = 0; |
| 904 int matches = |
| 905 sscanf(reinterpret_cast<char*>(buffer), "%*s%" Pu "", ¤t_rss_pages); |
| 906 if (matches != 1) { |
| 907 return -1; |
| 908 } |
| 909 return current_rss_pages * getpagesize(); |
| 910 } |
| 911 |
| 912 |
| 913 intptr_t Process::MaxRSS() { |
| 914 struct rusage usage; |
| 915 usage.ru_maxrss = 0; |
| 916 int r = getrusage(RUSAGE_SELF, &usage); |
| 917 if (r < 0) { |
| 918 return -1; |
| 919 } |
| 920 return usage.ru_maxrss * KB; |
| 921 } |
| 922 |
| 923 |
| 890 static Mutex* signal_mutex = new Mutex(); | 924 static Mutex* signal_mutex = new Mutex(); |
| 891 static SignalInfo* signal_handlers = NULL; | 925 static SignalInfo* signal_handlers = NULL; |
| 892 static const int kSignalsCount = 7; | 926 static const int kSignalsCount = 7; |
| 893 static const int kSignals[kSignalsCount] = { | 927 static const int kSignals[kSignalsCount] = { |
| 894 SIGHUP, SIGINT, SIGTERM, SIGUSR1, SIGUSR2, SIGWINCH, | 928 SIGHUP, SIGINT, SIGTERM, SIGUSR1, SIGUSR2, SIGWINCH, |
| 895 SIGQUIT // Allow VMService to listen on SIGQUIT. | 929 SIGQUIT // Allow VMService to listen on SIGQUIT. |
| 896 }; | 930 }; |
| 897 | 931 |
| 898 | 932 |
| 899 SignalInfo::~SignalInfo() { | 933 SignalInfo::~SignalInfo() { |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 996 VOID_NO_RETRY_EXPECTED(sigaction(signal, &act, NULL)); | 1030 VOID_NO_RETRY_EXPECTED(sigaction(signal, &act, NULL)); |
| 997 } | 1031 } |
| 998 } | 1032 } |
| 999 | 1033 |
| 1000 } // namespace bin | 1034 } // namespace bin |
| 1001 } // namespace dart | 1035 } // namespace dart |
| 1002 | 1036 |
| 1003 #endif // defined(HOST_OS_ANDROID) | 1037 #endif // defined(HOST_OS_ANDROID) |
| 1004 | 1038 |
| 1005 #endif // !defined(DART_IO_DISABLED) | 1039 #endif // !defined(DART_IO_DISABLED) |
| OLD | NEW |