aboutsummaryrefslogtreecommitdiffstats
path: root/src/platform/macos/rust-task_info/task_info.c
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2014-07-09 09:42:17 -0700
committerPatrick Walton <pcwalton@mimiga.net>2014-07-09 09:42:17 -0700
commit94909f2d087ff0568d34b259c5fda38dfb949bc7 (patch)
tree5d43e21becb8acb4f939d12c9881ecad32746f89 /src/platform/macos/rust-task_info/task_info.c
parent0dec28dd4a0f0d10dd721c16d8388c431718e303 (diff)
parent24d3979ce871dba7f20168dd0aebe5abd69644e7 (diff)
downloadservo-94909f2d087ff0568d34b259c5fda38dfb949bc7.tar.gz
servo-94909f2d087ff0568d34b259c5fda38dfb949bc7.zip
Merge pull request #2786 from nnethercote/task_info
Add a `task_info` crate and a `task_basic_info` module within it.
Diffstat (limited to 'src/platform/macos/rust-task_info/task_info.c')
-rw-r--r--src/platform/macos/rust-task_info/task_info.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/platform/macos/rust-task_info/task_info.c b/src/platform/macos/rust-task_info/task_info.c
new file mode 100644
index 00000000000..e8f59082609
--- /dev/null
+++ b/src/platform/macos/rust-task_info/task_info.c
@@ -0,0 +1,39 @@
+// Copyright 2013 The Servo Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#include <mach/mach_init.h>
+#include <mach/task.h>
+
+static int
+TaskBasicInfo(struct task_basic_info* info)
+{
+ mach_msg_type_number_t count = TASK_BASIC_INFO_COUNT;
+ kern_return_t kr = task_info(mach_task_self(), TASK_BASIC_INFO,
+ (task_info_t)info, &count);
+ return kr == KERN_SUCCESS ? 0 : -1;
+}
+
+int
+TaskBasicInfoVirtualSize(int64_t *virtualSize)
+{
+ struct task_basic_info ti;
+ int rv = TaskBasicInfo(&ti);
+ *virtualSize = (rv == 0) ? ti.virtual_size : 0;
+ return rv;
+}
+
+int
+TaskBasicInfoResidentSize(int64_t *residentSize)
+{
+ struct task_basic_info ti;
+ int rv = TaskBasicInfo(&ti);
+ *residentSize = (rv == 0) ? ti.resident_size : 0;
+ return rv;
+}
+