1/*
2 * Copyright 2014 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "ProcStats.h"
9
10#if defined(SK_BUILD_FOR_UNIX) || \
11    defined(SK_BUILD_FOR_MAC) || \
12    defined(SK_BUILD_FOR_ANDROID)
13
14    #include <sys/resource.h>
15    int sk_tools::getMaxResidentSetSizeMB() {
16        struct rusage ru;
17        getrusage(RUSAGE_SELF, &ru);
18    #if defined(SK_BUILD_FOR_MAC)
19        return static_cast<int>(ru.ru_maxrss / 1024 / 1024);  // Darwin reports bytes.
20    #else
21        return static_cast<int>(ru.ru_maxrss / 1024);  // Linux reports kilobytes.
22    #endif
23    }
24
25#else
26
27    int sk_tools::getMaxResidentSetSizeMB() {
28        return -1;
29    }
30
31#endif
32