/******************************************************************************* * Copyright (c) 2016, 2017 Association for Decentralized Information Management * in Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Semantum Oy - initial API and implementation *******************************************************************************/ package org.simantics.nativemem.internal; import java.util.List; import com.sun.jna.Native; import com.sun.jna.Structure; /** * This should work for Linux, MacOSX and BSD. * @author Tuukka Lehtonen * @since 1.29.0 */ public interface Resource64 extends Resource { Resource64 INSTANCE = Native.loadLibrary("c", Resource64.class); public static class Timeval extends Structure { public static final List FIELDS = createFieldsOrder("tv_sec", "tv_usec"); long v_sec; /* seconds */ long tv_usec; /* microseconds */ public List getFieldOrder() { return FIELDS; } }; public static class Rusage extends Structure { public static final List FIELDS = createFieldsOrder("ru_utime", "ru_stime", "ru_maxrss", "ru_ixrss", "ru_idrss", "ru_isrss", "ru_minflt", "ru_maxflt", "ru_nswap", "ru_inblock", "ru_oublock", "ru_msgsnd", "ru_msgrcv", "ru_nsignals", "ru_nvcsw", "ru_nivcsw"); Timeval ru_utime; /* user CPU time used */ Timeval ru_stime; /* system CPU time used */ long ru_maxrss; /* maximum resident set size */ long ru_ixrss; /* integral shared memory size */ long ru_idrss; /* integral unshared data size */ long ru_isrss; /* integral unshared stack size */ long ru_minflt; /* page reclaims (soft page faults) */ long ru_majflt; /* page faults (hard page faults) */ long ru_nswap; /* swaps */ long ru_inblock; /* block input operations */ long ru_oublock; /* block output operations */ long ru_msgsnd; /* IPC messages sent */ long ru_msgrcv; /* IPC messages received */ long ru_nsignals; /* signals received */ long ru_nvcsw; /* voluntary context switches */ long ru_nivcsw; /* involuntary context switches */ @Override protected List getFieldOrder() { return FIELDS; } public void writeTo(CMemoryInfo to) { to.peakRSS = ru_maxrss; } } int getrusage(int who, Rusage rusage); }