1 /*******************************************************************************
2 * Copyright (c) 2016, 2017 Association for Decentralized Information Management
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * which accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * Semantum Oy - initial API and implementation
11 *******************************************************************************/
12 package org.simantics.nativemem.internal;
14 import java.util.List;
16 import com.sun.jna.Native;
17 import com.sun.jna.Structure;
20 * This should work for Linux, MacOSX and BSD.
22 * @author Tuukka Lehtonen
25 public interface Resource64 extends Resource {
26 Resource64 INSTANCE = Native.loadLibrary("c", Resource64.class);
28 public static class Timeval extends Structure {
30 public static final List<String> FIELDS = createFieldsOrder("tv_sec", "tv_usec");
32 long v_sec; /* seconds */
33 long tv_usec; /* microseconds */
35 public List<String> getFieldOrder() {
40 public static class Rusage extends Structure {
42 public static final List<String> FIELDS = createFieldsOrder("ru_utime", "ru_stime", "ru_maxrss", "ru_ixrss",
43 "ru_idrss", "ru_isrss", "ru_minflt", "ru_maxflt", "ru_nswap", "ru_inblock", "ru_oublock", "ru_msgsnd",
44 "ru_msgrcv", "ru_nsignals", "ru_nvcsw", "ru_nivcsw");
46 Timeval ru_utime; /* user CPU time used */
47 Timeval ru_stime; /* system CPU time used */
48 long ru_maxrss; /* maximum resident set size */
49 long ru_ixrss; /* integral shared memory size */
50 long ru_idrss; /* integral unshared data size */
51 long ru_isrss; /* integral unshared stack size */
52 long ru_minflt; /* page reclaims (soft page faults) */
53 long ru_majflt; /* page faults (hard page faults) */
54 long ru_nswap; /* swaps */
55 long ru_inblock; /* block input operations */
56 long ru_oublock; /* block output operations */
57 long ru_msgsnd; /* IPC messages sent */
58 long ru_msgrcv; /* IPC messages received */
59 long ru_nsignals; /* signals received */
60 long ru_nvcsw; /* voluntary context switches */
61 long ru_nivcsw; /* involuntary context switches */
64 protected List<String> getFieldOrder() {
68 public void writeTo(CMemoryInfo to) {
69 to.peakRSS = ru_maxrss;
74 int getrusage(int who, Rusage rusage);