freebsd.hh revision 11383
110810Sbr@bsdpad.com/* 210810Sbr@bsdpad.com * Copyright (c) 2015 Ruslan Bukin <br@bsdpad.com> 310810Sbr@bsdpad.com * All rights reserved. 410810Sbr@bsdpad.com * 510810Sbr@bsdpad.com * This software was developed by the University of Cambridge Computer 610810Sbr@bsdpad.com * Laboratory as part of the CTSRD Project, with support from the UK Higher 710810Sbr@bsdpad.com * Education Innovation Fund (HEIF). 810810Sbr@bsdpad.com * 910810Sbr@bsdpad.com * Redistribution and use in source and binary forms, with or without 1010810Sbr@bsdpad.com * modification, are permitted provided that the following conditions are 1110810Sbr@bsdpad.com * met: redistributions of source code must retain the above copyright 1210810Sbr@bsdpad.com * notice, this list of conditions and the following disclaimer; 1310810Sbr@bsdpad.com * redistributions in binary form must reproduce the above copyright 1410810Sbr@bsdpad.com * notice, this list of conditions and the following disclaimer in the 1510810Sbr@bsdpad.com * documentation and/or other materials provided with the distribution; 1610810Sbr@bsdpad.com * neither the name of the copyright holders nor the names of its 1710810Sbr@bsdpad.com * contributors may be used to endorse or promote products derived from 1810810Sbr@bsdpad.com * this software without specific prior written permission. 1910810Sbr@bsdpad.com * 2010810Sbr@bsdpad.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2110810Sbr@bsdpad.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2210810Sbr@bsdpad.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2310810Sbr@bsdpad.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2410810Sbr@bsdpad.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2510810Sbr@bsdpad.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2610810Sbr@bsdpad.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2710810Sbr@bsdpad.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2810810Sbr@bsdpad.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2910810Sbr@bsdpad.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 3010810Sbr@bsdpad.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3110810Sbr@bsdpad.com */ 3210810Sbr@bsdpad.com 3310810Sbr@bsdpad.com#ifndef __ARCH_ARM_FREEBSD_FREEBSD_HH__ 3410810Sbr@bsdpad.com#define __ARCH_ARM_FREEBSD_FREEBSD_HH__ 3510810Sbr@bsdpad.com 3610810Sbr@bsdpad.com#include "kern/freebsd/freebsd.hh" 3710810Sbr@bsdpad.com 3810810Sbr@bsdpad.comclass ArmFreebsd32 : public FreeBSD 3910810Sbr@bsdpad.com{ 4010810Sbr@bsdpad.com public: 4110810Sbr@bsdpad.com 4210810Sbr@bsdpad.com /// This table maps the target open() flags to the corresponding 4310810Sbr@bsdpad.com /// host open() flags. 4411381Sbrandon.potter@amd.com static SyscallFlagTransTable openFlagTable[]; 4510810Sbr@bsdpad.com 4610810Sbr@bsdpad.com /// Number of entries in openFlagTable[]. 4710810Sbr@bsdpad.com static const int NUM_OPEN_FLAGS; 4810810Sbr@bsdpad.com 4910810Sbr@bsdpad.com //@{ 5010810Sbr@bsdpad.com /// Basic ARM FreeBSD types 5110810Sbr@bsdpad.com typedef uint32_t size_t; 5210810Sbr@bsdpad.com typedef uint32_t off_t; 5310810Sbr@bsdpad.com typedef int32_t time_t; 5410810Sbr@bsdpad.com typedef int32_t clock_t; 5510810Sbr@bsdpad.com //@} 5610810Sbr@bsdpad.com 5710810Sbr@bsdpad.com //@{ 5810810Sbr@bsdpad.com /// open(2) flag values. 5910810Sbr@bsdpad.com static const int TGT_O_RDONLY = 0x00000000; //!< O_RDONLY 6010810Sbr@bsdpad.com static const int TGT_O_WRONLY = 0x00000001; //!< O_WRONLY 6110810Sbr@bsdpad.com static const int TGT_O_RDWR = 0x00000002; //!< O_RDWR 6210810Sbr@bsdpad.com static const int TGT_O_CREAT = 0x00000200; //!< O_CREAT 6310810Sbr@bsdpad.com static const int TGT_O_EXCL = 0x00000800; //!< O_EXCL 6410810Sbr@bsdpad.com static const int TGT_O_NOCTTY = 0x00008000; //!< O_NOCTTY 6510810Sbr@bsdpad.com static const int TGT_O_TRUNC = 0x00000400; //!< O_TRUNC 6610810Sbr@bsdpad.com static const int TGT_O_APPEND = 0x00000008; //!< O_APPEND 6710810Sbr@bsdpad.com static const int TGT_O_NONBLOCK = 0x00000004; //!< O_NONBLOCK 6810810Sbr@bsdpad.com static const int TGT_O_SYNC = 0x00000080; //!< O_SYNC 6910810Sbr@bsdpad.com static const int TGT_FASYNC = 0x00000040; //!< FASYNC 7010810Sbr@bsdpad.com static const int TGT_O_DIRECT = 0x00010000; //!< O_DIRECT 7110810Sbr@bsdpad.com static const int TGT_O_DIRECTORY = 0x00020000; //!< O_DIRECTORY 7210810Sbr@bsdpad.com static const int TGT_O_NOFOLLOW = 0x00000100; //!< O_NOFOLLOW 7310810Sbr@bsdpad.com static const int TGT_O_CLOEXEC = 0x00100000; //!< O_CLOEXEC 7410810Sbr@bsdpad.com //@} 7510810Sbr@bsdpad.com 7610810Sbr@bsdpad.com /// For mmap(). 7711383Sbrandon.potter@amd.com static const unsigned TGT_MAP_SHARED = 0x0001; 7811383Sbrandon.potter@amd.com static const unsigned TGT_MAP_PRIVATE = 0x0002; 7910810Sbr@bsdpad.com static const unsigned TGT_MAP_ANONYMOUS = 0x1000; 8010810Sbr@bsdpad.com static const unsigned TGT_MAP_FIXED = 0x0010; 8110810Sbr@bsdpad.com 8210810Sbr@bsdpad.com /// Limit struct for getrlimit/setrlimit. 8310810Sbr@bsdpad.com struct rlimit { 8410810Sbr@bsdpad.com uint32_t rlim_cur; //!< soft limit 8510810Sbr@bsdpad.com uint32_t rlim_max; //!< hard limit 8610810Sbr@bsdpad.com }; 8710810Sbr@bsdpad.com 8810810Sbr@bsdpad.com /// For gettimeofday(). 8910810Sbr@bsdpad.com struct timeval { 9010810Sbr@bsdpad.com int32_t tv_sec; //!< seconds 9110810Sbr@bsdpad.com int32_t tv_usec; //!< microseconds 9210810Sbr@bsdpad.com }; 9310810Sbr@bsdpad.com 9410810Sbr@bsdpad.com // For writev/readv 9510810Sbr@bsdpad.com struct tgt_iovec { 9610810Sbr@bsdpad.com uint32_t iov_base; // void * 9710810Sbr@bsdpad.com uint32_t iov_len; 9810810Sbr@bsdpad.com }; 9910810Sbr@bsdpad.com 10010810Sbr@bsdpad.com /* 10110810Sbr@bsdpad.com * sizeof st 120 10210810Sbr@bsdpad.com * sizeof st_dev 4 10310810Sbr@bsdpad.com * sizeof st_ino 4 10410810Sbr@bsdpad.com * sizeof st_mode 2 10510810Sbr@bsdpad.com * sizeof st_nlink 2 10610810Sbr@bsdpad.com * sizeof st_uid 4 10710810Sbr@bsdpad.com * sizeof st_gid 4 10810810Sbr@bsdpad.com * sizeof st_rdev 4 10910810Sbr@bsdpad.com * sizeof st_atim 16 11010810Sbr@bsdpad.com * sizeof st_size 8 11110810Sbr@bsdpad.com * sizeof st_blocks 8 11210810Sbr@bsdpad.com * sizeof st_blksize 4 11310810Sbr@bsdpad.com * sizeof st_flags 4 11410810Sbr@bsdpad.com * sizeof st_gen 4 11510810Sbr@bsdpad.com * sizeof st_lspare 4 11610810Sbr@bsdpad.com */ 11710810Sbr@bsdpad.com 11810810Sbr@bsdpad.com typedef struct { 11910810Sbr@bsdpad.com uint32_t st_dev; 12010810Sbr@bsdpad.com uint32_t st_ino; 12110810Sbr@bsdpad.com uint16_t st_mode; 12210810Sbr@bsdpad.com uint16_t st_nlink; 12310810Sbr@bsdpad.com uint32_t st_uid; 12410810Sbr@bsdpad.com uint32_t st_gid; 12510810Sbr@bsdpad.com uint32_t st_rdev; 12610810Sbr@bsdpad.com uint64_t st_atimeX; 12710810Sbr@bsdpad.com uint64_t st_atime_nsec; 12810810Sbr@bsdpad.com uint64_t st_mtimeX; 12910810Sbr@bsdpad.com uint64_t st_mtime_nsec; 13010810Sbr@bsdpad.com uint64_t st_ctimeX; 13110810Sbr@bsdpad.com uint64_t st_ctime_nsec; 13210810Sbr@bsdpad.com uint64_t st_size; 13310810Sbr@bsdpad.com uint64_t st_blocks; 13410810Sbr@bsdpad.com uint32_t st_blksize; 13510810Sbr@bsdpad.com uint32_t st_flags; 13610810Sbr@bsdpad.com uint32_t st_gen; 13710810Sbr@bsdpad.com uint32_t st_lspare; 13810810Sbr@bsdpad.com uint64_t st_birthtimX; 13910810Sbr@bsdpad.com uint64_t st_birthtim; 14010810Sbr@bsdpad.com } tgt_stat; 14110810Sbr@bsdpad.com 14210810Sbr@bsdpad.com typedef struct { 14310810Sbr@bsdpad.com uint32_t st_dev; 14410810Sbr@bsdpad.com uint32_t st_ino; 14510810Sbr@bsdpad.com uint16_t st_mode; 14610810Sbr@bsdpad.com uint16_t st_nlink; 14710810Sbr@bsdpad.com uint32_t st_uid; 14810810Sbr@bsdpad.com uint32_t st_gid; 14910810Sbr@bsdpad.com uint32_t st_rdev; 15010810Sbr@bsdpad.com uint64_t st_atimeX; 15110810Sbr@bsdpad.com uint64_t st_atime_nsec; 15210810Sbr@bsdpad.com uint64_t st_mtimeX; 15310810Sbr@bsdpad.com uint64_t st_mtime_nsec; 15410810Sbr@bsdpad.com uint64_t st_ctimeX; 15510810Sbr@bsdpad.com uint64_t st_ctime_nsec; 15610810Sbr@bsdpad.com uint64_t st_size; 15710810Sbr@bsdpad.com uint64_t st_blocks; 15810810Sbr@bsdpad.com uint32_t st_blksize; 15910810Sbr@bsdpad.com uint32_t st_flags; 16010810Sbr@bsdpad.com uint32_t st_gen; 16110810Sbr@bsdpad.com uint32_t st_lspare; 16210810Sbr@bsdpad.com uint64_t st_birthtimX; 16310810Sbr@bsdpad.com uint64_t st_birthtim; 16410810Sbr@bsdpad.com } tgt_stat64; 16510810Sbr@bsdpad.com 16610810Sbr@bsdpad.com /// For getrusage(). 16710810Sbr@bsdpad.com struct rusage { 16810810Sbr@bsdpad.com struct timeval ru_utime; //!< user time used 16910810Sbr@bsdpad.com struct timeval ru_stime; //!< system time used 17010810Sbr@bsdpad.com int32_t ru_maxrss; //!< max rss 17110810Sbr@bsdpad.com int32_t ru_ixrss; //!< integral shared memory size 17210810Sbr@bsdpad.com int32_t ru_idrss; //!< integral unshared data " 17310810Sbr@bsdpad.com int32_t ru_isrss; //!< integral unshared stack " 17410810Sbr@bsdpad.com int32_t ru_minflt; //!< page reclaims - total vmfaults 17510810Sbr@bsdpad.com int32_t ru_majflt; //!< page faults 17610810Sbr@bsdpad.com int32_t ru_nswap; //!< swaps 17710810Sbr@bsdpad.com int32_t ru_inblock; //!< block input operations 17810810Sbr@bsdpad.com int32_t ru_oublock; //!< block output operations 17910810Sbr@bsdpad.com int32_t ru_msgsnd; //!< messages sent 18010810Sbr@bsdpad.com int32_t ru_msgrcv; //!< messages received 18110810Sbr@bsdpad.com int32_t ru_nsignals; //!< signals received 18210810Sbr@bsdpad.com int32_t ru_nvcsw; //!< voluntary context switches 18310810Sbr@bsdpad.com int32_t ru_nivcsw; //!< involuntary " 18410810Sbr@bsdpad.com }; 18510810Sbr@bsdpad.com 18610810Sbr@bsdpad.com /// For times(). 18710810Sbr@bsdpad.com struct tms { 18810810Sbr@bsdpad.com int32_t tms_utime; //!< user time 18910810Sbr@bsdpad.com int32_t tms_stime; //!< system time 19010810Sbr@bsdpad.com int32_t tms_cutime; //!< user time of children 19110810Sbr@bsdpad.com int32_t tms_cstime; //!< system time of children 19210810Sbr@bsdpad.com }; 19310810Sbr@bsdpad.com}; 19410810Sbr@bsdpad.com 19510810Sbr@bsdpad.comclass ArmFreebsd64 : public FreeBSD 19610810Sbr@bsdpad.com{ 19710810Sbr@bsdpad.com public: 19810810Sbr@bsdpad.com 19910810Sbr@bsdpad.com /// This table maps the target open() flags to the corresponding 20010810Sbr@bsdpad.com /// host open() flags. 20111381Sbrandon.potter@amd.com static SyscallFlagTransTable openFlagTable[]; 20210810Sbr@bsdpad.com 20310810Sbr@bsdpad.com /// Number of entries in openFlagTable[]. 20410810Sbr@bsdpad.com static const int NUM_OPEN_FLAGS; 20510810Sbr@bsdpad.com 20610810Sbr@bsdpad.com //@{ 20710810Sbr@bsdpad.com /// Basic ARM FreeBSD types 20810810Sbr@bsdpad.com typedef uint64_t size_t; 20910810Sbr@bsdpad.com typedef uint64_t off_t; 21010810Sbr@bsdpad.com typedef int64_t time_t; 21110810Sbr@bsdpad.com typedef int64_t clock_t; 21210810Sbr@bsdpad.com //@} 21310810Sbr@bsdpad.com 21410810Sbr@bsdpad.com //@{ 21510810Sbr@bsdpad.com /// open(2) flag values. 21610810Sbr@bsdpad.com static const int TGT_O_RDONLY = 0x00000000; //!< O_RDONLY 21710810Sbr@bsdpad.com static const int TGT_O_WRONLY = 0x00000001; //!< O_WRONLY 21810810Sbr@bsdpad.com static const int TGT_O_RDWR = 0x00000002; //!< O_RDWR 21910810Sbr@bsdpad.com static const int TGT_O_CREAT = 0x00000200; //!< O_CREAT 22010810Sbr@bsdpad.com static const int TGT_O_EXCL = 0x00000800; //!< O_EXCL 22110810Sbr@bsdpad.com static const int TGT_O_NOCTTY = 0x00008000; //!< O_NOCTTY 22210810Sbr@bsdpad.com static const int TGT_O_TRUNC = 0x00000400; //!< O_TRUNC 22310810Sbr@bsdpad.com static const int TGT_O_APPEND = 0x00000008; //!< O_APPEND 22410810Sbr@bsdpad.com static const int TGT_O_NONBLOCK = 0x00000004; //!< O_NONBLOCK 22510810Sbr@bsdpad.com static const int TGT_O_SYNC = 0x00000080; //!< O_SYNC 22610810Sbr@bsdpad.com static const int TGT_FASYNC = 0x00000040; //!< FASYNC 22710810Sbr@bsdpad.com static const int TGT_O_DIRECT = 0x00010000; //!< O_DIRECT 22810810Sbr@bsdpad.com static const int TGT_O_DIRECTORY = 0x00020000; //!< O_DIRECTORY 22910810Sbr@bsdpad.com static const int TGT_O_NOFOLLOW = 0x00000100; //!< O_NOFOLLOW 23010810Sbr@bsdpad.com static const int TGT_O_CLOEXEC = 0x00100000; //!< O_CLOEXEC 23110810Sbr@bsdpad.com //@} 23210810Sbr@bsdpad.com 23310810Sbr@bsdpad.com /// For mmap(). 23411383Sbrandon.potter@amd.com static const unsigned TGT_MAP_SHARED = 0x0001; 23511383Sbrandon.potter@amd.com static const unsigned TGT_MAP_PRIVATE = 0x0002; 23610810Sbr@bsdpad.com static const unsigned TGT_MAP_ANONYMOUS = 0x1000; 23710810Sbr@bsdpad.com static const unsigned TGT_MAP_FIXED = 0x0010; 23810810Sbr@bsdpad.com 23910810Sbr@bsdpad.com //@{ 24010810Sbr@bsdpad.com /// For getrusage(). 24110810Sbr@bsdpad.com static const int TGT_RUSAGE_SELF = 0; 24210810Sbr@bsdpad.com static const int TGT_RUSAGE_CHILDREN = -1; 24310810Sbr@bsdpad.com static const int TGT_RUSAGE_THREAD = 1; 24410810Sbr@bsdpad.com //@} 24510810Sbr@bsdpad.com 24610810Sbr@bsdpad.com /// Resource enumeration for getrlimit(). 24710810Sbr@bsdpad.com enum rlimit_resources { 24810810Sbr@bsdpad.com TGT_RLIMIT_CPU = 0, 24910810Sbr@bsdpad.com TGT_RLIMIT_FSIZE = 1, 25010810Sbr@bsdpad.com TGT_RLIMIT_DATA = 2, 25110810Sbr@bsdpad.com TGT_RLIMIT_STACK = 3, 25210810Sbr@bsdpad.com TGT_RLIMIT_CORE = 4, 25310810Sbr@bsdpad.com TGT_RLIMIT_RSS = 5, 25410810Sbr@bsdpad.com TGT_RLIMIT_MEMLOCK = 6, 25510810Sbr@bsdpad.com TGT_RLIMIT_NPROC = 7, 25610810Sbr@bsdpad.com TGT_RLIMIT_NOFILE = 8, 25710810Sbr@bsdpad.com TGT_RLIMIT_SBSIZE = 9, 25810810Sbr@bsdpad.com TGT_RLIMIT_VMEM = 10, 25910810Sbr@bsdpad.com TGT_RLIMIT_AS = TGT_RLIMIT_VMEM, 26010810Sbr@bsdpad.com TGT_RLIMIT_NPTS = 11, 26110810Sbr@bsdpad.com TGT_RLIMIT_SWAP = 12, 26210810Sbr@bsdpad.com TGT_RLIMIT_KQUEUES = 13 26310810Sbr@bsdpad.com }; 26410810Sbr@bsdpad.com 26510810Sbr@bsdpad.com /// Limit struct for getrlimit/setrlimit. 26610810Sbr@bsdpad.com struct rlimit { 26710810Sbr@bsdpad.com uint64_t rlim_cur; //!< soft limit 26810810Sbr@bsdpad.com uint64_t rlim_max; //!< hard limit 26910810Sbr@bsdpad.com }; 27010810Sbr@bsdpad.com 27110810Sbr@bsdpad.com /// For gettimeofday(). 27210810Sbr@bsdpad.com struct timeval { 27310810Sbr@bsdpad.com int64_t tv_sec; //!< seconds 27410810Sbr@bsdpad.com int64_t tv_usec; //!< microseconds 27510810Sbr@bsdpad.com }; 27610810Sbr@bsdpad.com 27710810Sbr@bsdpad.com // For writev/readv 27810810Sbr@bsdpad.com struct tgt_iovec { 27910810Sbr@bsdpad.com uint64_t iov_base; // void * 28010810Sbr@bsdpad.com uint64_t iov_len; 28110810Sbr@bsdpad.com }; 28210810Sbr@bsdpad.com 28310810Sbr@bsdpad.com typedef struct { 28410810Sbr@bsdpad.com uint32_t st_dev; 28510810Sbr@bsdpad.com uint32_t st_ino; 28610810Sbr@bsdpad.com uint16_t st_mode; 28710810Sbr@bsdpad.com uint16_t st_nlink; 28810810Sbr@bsdpad.com uint32_t st_uid; 28910810Sbr@bsdpad.com uint32_t st_gid; 29010810Sbr@bsdpad.com uint32_t st_rdev; 29110810Sbr@bsdpad.com uint64_t st_atimeX; 29210810Sbr@bsdpad.com uint64_t st_atime_nsec; 29310810Sbr@bsdpad.com uint64_t st_mtimeX; 29410810Sbr@bsdpad.com uint64_t st_mtime_nsec; 29510810Sbr@bsdpad.com uint64_t st_ctimeX; 29610810Sbr@bsdpad.com uint64_t st_ctime_nsec; 29710810Sbr@bsdpad.com uint64_t st_size; 29810810Sbr@bsdpad.com uint64_t st_blocks; 29910810Sbr@bsdpad.com uint32_t st_blksize; 30010810Sbr@bsdpad.com uint32_t st_flags; 30110810Sbr@bsdpad.com uint32_t st_gen; 30210810Sbr@bsdpad.com uint32_t st_lspare; 30310810Sbr@bsdpad.com uint64_t st_birthtimX; 30410810Sbr@bsdpad.com uint64_t st_birthtim; 30510810Sbr@bsdpad.com } tgt_stat; 30610810Sbr@bsdpad.com 30710810Sbr@bsdpad.com typedef struct { 30810810Sbr@bsdpad.com uint32_t st_dev; 30910810Sbr@bsdpad.com uint32_t st_ino; 31010810Sbr@bsdpad.com uint16_t st_mode; 31110810Sbr@bsdpad.com uint16_t st_nlink; 31210810Sbr@bsdpad.com uint32_t st_uid; 31310810Sbr@bsdpad.com uint32_t st_gid; 31410810Sbr@bsdpad.com uint32_t st_rdev; 31510810Sbr@bsdpad.com uint64_t st_atimeX; 31610810Sbr@bsdpad.com uint64_t st_atime_nsec; 31710810Sbr@bsdpad.com uint64_t st_mtimeX; 31810810Sbr@bsdpad.com uint64_t st_mtime_nsec; 31910810Sbr@bsdpad.com uint64_t st_ctimeX; 32010810Sbr@bsdpad.com uint64_t st_ctime_nsec; 32110810Sbr@bsdpad.com uint64_t st_size; 32210810Sbr@bsdpad.com uint64_t st_blocks; 32310810Sbr@bsdpad.com uint32_t st_blksize; 32410810Sbr@bsdpad.com uint32_t st_flags; 32510810Sbr@bsdpad.com uint32_t st_gen; 32610810Sbr@bsdpad.com uint32_t st_lspare; 32710810Sbr@bsdpad.com uint64_t st_birthtimX; 32810810Sbr@bsdpad.com uint64_t st_birthtim; 32910810Sbr@bsdpad.com } tgt_stat64; 33010810Sbr@bsdpad.com 33110810Sbr@bsdpad.com /// For getrusage(). 33210810Sbr@bsdpad.com struct rusage { 33310810Sbr@bsdpad.com struct timeval ru_utime; //!< user time used 33410810Sbr@bsdpad.com struct timeval ru_stime; //!< system time used 33510810Sbr@bsdpad.com int64_t ru_maxrss; //!< max rss 33610810Sbr@bsdpad.com int64_t ru_ixrss; //!< integral shared memory size 33710810Sbr@bsdpad.com int64_t ru_idrss; //!< integral unshared data " 33810810Sbr@bsdpad.com int64_t ru_isrss; //!< integral unshared stack " 33910810Sbr@bsdpad.com int64_t ru_minflt; //!< page reclaims - total vmfaults 34010810Sbr@bsdpad.com int64_t ru_majflt; //!< page faults 34110810Sbr@bsdpad.com int64_t ru_nswap; //!< swaps 34210810Sbr@bsdpad.com int64_t ru_inblock; //!< block input operations 34310810Sbr@bsdpad.com int64_t ru_oublock; //!< block output operations 34410810Sbr@bsdpad.com int64_t ru_msgsnd; //!< messages sent 34510810Sbr@bsdpad.com int64_t ru_msgrcv; //!< messages received 34610810Sbr@bsdpad.com int64_t ru_nsignals; //!< signals received 34710810Sbr@bsdpad.com int64_t ru_nvcsw; //!< voluntary context switches 34810810Sbr@bsdpad.com int64_t ru_nivcsw; //!< involuntary " 34910810Sbr@bsdpad.com }; 35010810Sbr@bsdpad.com 35110810Sbr@bsdpad.com /// For times(). 35210810Sbr@bsdpad.com struct tms { 35310810Sbr@bsdpad.com int64_t tms_utime; //!< user time 35410810Sbr@bsdpad.com int64_t tms_stime; //!< system time 35510810Sbr@bsdpad.com int64_t tms_cutime; //!< user time of children 35610810Sbr@bsdpad.com int64_t tms_cstime; //!< system time of children 35710810Sbr@bsdpad.com }; 35810810Sbr@bsdpad.com}; 35910810Sbr@bsdpad.com 36010810Sbr@bsdpad.com#endif 361