gem5  v21.1.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
linux.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2004-2009 The Regents of The University of Michigan
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met: redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer;
9  * redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution;
12  * neither the name of the copyright holders nor the names of its
13  * contributors may be used to endorse or promote products derived from
14  * this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 #ifndef __LINUX_HH__
30 #define __LINUX_HH__
31 
32 #include <string>
33 
34 #include "base/random.hh"
35 #include "base/types.hh"
36 #include "kern/operatingsystem.hh"
37 #include "sim/process.hh"
38 
39 namespace gem5
40 {
41 
42 class ThreadContext;
43 
49 class Linux : public OperatingSystem
50 {
51 
52  public:
53 
55  typedef uint64_t size_t;
57  typedef uint64_t off_t;
58  typedef int64_t time_t;
59  typedef int64_t clock_t;
60  typedef uint32_t uid_t;
61  typedef uint32_t gid_t;
63 
67  struct tgt_stat
68  {
69  uint32_t st_dev;
70  uint32_t st_ino;
71  uint32_t st_mode;
72  uint32_t st_nlink;
73  uint32_t st_uid;
74  uint32_t st_gid;
75  uint32_t st_rdev;
76  int32_t _pad1;
77  int64_t st_size;
78  uint64_t st_atimeX;
79  uint64_t st_mtimeX;
80  uint64_t st_ctimeX;
81  uint32_t st_blksize;
82  int32_t st_blocks;
83  uint32_t st_flags;
84  uint32_t st_gen;
85  };
86 
87  // same for stat64
88  struct tgt_stat64
89  {
90  uint64_t st_dev;
91  uint64_t st_ino;
92  uint64_t st_rdev;
93  int64_t st_size;
94  uint64_t st_blocks;
95 
96  uint32_t st_mode;
97  uint32_t st_uid;
98  uint32_t st_gid;
99  uint32_t st_blksize;
100  uint32_t st_nlink;
101  uint32_t __pad0;
102 
103  uint64_t st_atimeX;
104  uint64_t st_atime_nsec;
105  uint64_t st_mtimeX;
106  uint64_t st_mtime_nsec;
107  uint64_t st_ctimeX;
108  uint64_t st_ctime_nsec;
109  int64_t ___unused[3];
110  };
111 
113  static const int _SYS_NMLN = 65;
114 
116  struct utsname
117  {
123  };
124 
126  struct rlimit
127  {
128  uint64_t rlim_cur;
129  uint64_t rlim_max;
130  };
131 
133  struct timeval
134  {
135  int64_t tv_sec;
136  int64_t tv_usec;
137  };
138 
140  struct timespec
141  {
143  int64_t tv_nsec;
144  };
145 
147  static const int M5_SC_CLK_TCK = 100;
148 
150  struct tms
151  {
152  int64_t tms_utime;
153  int64_t tms_stime;
154  int64_t tms_cutime;
155  int64_t tms_cstime;
156  };
157 
158  // For writev/readv
159  struct tgt_iovec
160  {
161  uint64_t iov_base; // void *
162  uint64_t iov_len;
163  };
164 
165  // For select().
166  // linux-3.14-src/include/uapi/linux/posix_types.h
167  struct fd_set
168  {
169 #ifndef LINUX__FD_SETSIZE
170 #define LINUX__FD_SETSIZE 1024
171  unsigned long fds_bits[LINUX__FD_SETSIZE / (8 * sizeof(long))];
172 #endif
173  };
174 
176  static const unsigned TGT_TCGETS = 0x5401;
178  static const unsigned TGT_TCGETA = 0x5405;
179  static const unsigned TGT_TCSETAW = 0x5407;
180  static const unsigned TGT_FIONREAD = 0x541B;
182 
187  static bool
188  isTtyReq(unsigned req)
189  {
190  switch (req) {
191  case TGT_FIONREAD:
192  case TGT_TCSETAW:
193  case TGT_TCGETS:
194  case TGT_TCGETA:
195  return true;
196  default:
197  return false;
198  }
199  }
200 
201 
203  static const unsigned TGT_RLIMIT_CPU = 0;
204  static const unsigned TGT_RLIMIT_FSIZE = 1;
205  static const unsigned TGT_RLIMIT_DATA = 2;
206  static const unsigned TGT_RLIMIT_STACK = 3;
207  static const unsigned TGT_RLIMIT_CORE = 4;
208  static const unsigned TGT_RLIMIT_RSS = 5;
209  static const unsigned TGT_RLIMIT_NPROC = 6;
210  static const unsigned TGT_RLIMIT_NOFILE = 7;
211  static const unsigned TGT_RLIMIT_MEMLOCK = 8;
212  static const unsigned TGT_RLIMIT_AS = 9;
213  static const unsigned TGT_RLIMIT_LOCKS = 10;
214  static const unsigned TGT_RLIMIT_SIGPENDING = 11;
215  static const unsigned TGT_RLIMIT_MSGQUEUE = 12;
216  static const unsigned TGT_RLIMIT_NICE = 13;
217  static const unsigned TGT_RLIMIT_RTPRIO = 14;
218  static const unsigned TGT_RLIMIT_RTTIME = 15;
219  static const unsigned TGT_RLIM_NLIMITS = 16;
220 
222  static const int TGT_RUSAGE_SELF = 0;
223  static const int TGT_RUSAGE_CHILDREN = -1;
224  static const int TGT_RUSAGE_BOTH = -2;
225 
226  struct rusage
227  {
228  struct timeval ru_utime;
229  struct timeval ru_stime;
230  int64_t ru_maxrss;
231  int64_t ru_ixrss;
232  int64_t ru_idrss;
233  int64_t ru_isrss;
234  int64_t ru_minflt;
235  int64_t ru_majflt;
236  int64_t ru_nswap;
237  int64_t ru_inblock;
238  int64_t ru_oublock;
239  int64_t ru_msgsnd;
240  int64_t ru_msgrcv;
241  int64_t ru_nsignals;
242  int64_t ru_nvcsw;
243  int64_t ru_nivcsw;
244  };
245 
246  // For /dev/urandom accesses
247  static Random random;
248 
249  static int openSpecialFile(std::string path, Process *process,
250  ThreadContext *tc);
251  static std::string procMeminfo(Process *process, ThreadContext *tc);
252  static std::string etcPasswd(Process *process, ThreadContext *tc);
253  static std::string procSelfMaps(Process *process, ThreadContext *tc);
254  static std::string cpuOnline(Process *process, ThreadContext *tc);
255  static std::string devRandom(Process *process, ThreadContext *tc);
256 
257  // For futex system call
258  static const unsigned TGT_FUTEX_WAIT = 0;
259  static const unsigned TGT_FUTEX_WAKE = 1;
260  static const unsigned TGT_FUTEX_REQUEUE = 3;
261  static const unsigned TGT_FUTEX_CMP_REQUEUE = 4;
262  static const unsigned TGT_FUTEX_WAKE_OP = 5;
263  static const unsigned TGT_FUTEX_WAIT_BITSET = 9;
264  static const unsigned TGT_FUTEX_WAKE_BITSET = 10;
265  static const unsigned TGT_EAGAIN = 11;
266  static const unsigned TGT_EWOULDBLOCK = TGT_EAGAIN;
267  static const unsigned TGT_FUTEX_PRIVATE_FLAG = 128;
268  static const unsigned TGT_FUTEX_CLOCK_REALTIME_FLAG = 256;
269  // op field of futex_wake_op operation
270  static const unsigned TGT_FUTEX_OP_SET = 0; // uaddr2 = oparg;
271  static const unsigned TGT_FUTEX_OP_ADD = 1; // uaddr2 += oparg;
272  static const unsigned TGT_FUTEX_OP_OR = 2; // uaddr2 |= oparg;
273  static const unsigned TGT_FUTEX_OP_ANDN = 3; // uaddr2 &= ~oparg;
274  static const unsigned TGT_FUTEX_OP_XOR = 4; // uaddr2 ^= oparg;
275  // Use (1 << oparg) as operand
276  static const unsigned TGT_FUTEX_OP_ARG_SHIFT = 8;
277  // cmp field of futex_wake_op operation
278  static const unsigned TGT_FUTEX_OP_CMP_EQ = 0;
279  static const unsigned TGT_FUTEX_OP_CMP_NE = 1;
280  static const unsigned TGT_FUTEX_OP_CMP_LT = 2;
281  static const unsigned TGT_FUTEX_OP_CMP_LE = 3;
282  static const unsigned TGT_FUTEX_OP_CMP_GT = 4;
283  static const unsigned TGT_FUTEX_OP_CMP_GE = 5;
284 
285  // for *at syscalls
286  static const int TGT_AT_FDCWD = -100;
287 
288  // for MREMAP
289  static const unsigned TGT_MREMAP_MAYMOVE = 0x1;
290  static const unsigned TGT_MREMAP_FIXED = 0x2;
291 
292  static const unsigned TGT_CLONE_VM = 0x00000100;
293  static const unsigned TGT_CLONE_FS = 0x00000200;
294  static const unsigned TGT_CLONE_FILES = 0x00000400;
295  static const unsigned TGT_CLONE_SIGHAND = 0x00000800;
296  static const unsigned TGT_CLONE_PTRACE = 0x00002000;
297  static const unsigned TGT_CLONE_VFORK = 0x00004000;
298  static const unsigned TGT_CLONE_PARENT = 0x00008000;
299  static const unsigned TGT_CLONE_THREAD = 0x00010000;
300  static const unsigned TGT_CLONE_NEWNS = 0x00020000;
301  static const unsigned TGT_CLONE_SYSVSEM = 0x00040000;
302  static const unsigned TGT_CLONE_SETTLS = 0x00080000;
303  static const unsigned TGT_CLONE_PARENT_SETTID = 0x00100000;
304  static const unsigned TGT_CLONE_CHILD_CLEARTID = 0x00200000;
305  static const unsigned TGT_CLONE_DETACHED = 0x00400000;
306  static const unsigned TGT_CLONE_UNTRACED = 0x00800000;
307  static const unsigned TGT_CLONE_CHILD_SETTID = 0x01000000;
308  static const unsigned TGT_CLONE_NEWUTS = 0x04000000;
309  static const unsigned TGT_CLONE_NEWIPC = 0x08000000;
310  static const unsigned TGT_CLONE_NEWUSER = 0x10000000;
311  static const unsigned TGT_CLONE_NEWPID = 0x20000000;
312  static const unsigned TGT_CLONE_NEWNET = 0x40000000;
313  static const unsigned TGT_CLONE_IO = 0x80000000;
314 
315  // linux-3.13-src/include/uapi/linux/wait.h
316  static const unsigned TGT_WNOHANG = 0x00000001;
317  static const unsigned TGT_WUNTRACED = 0x00000002;
318  static const unsigned TGT_WSTOPPED = TGT_WUNTRACED;
319  static const unsigned TGT_WEXITED = 0x00000004;
320  static const unsigned TGT_WCONTINUED = 0x00000008;
321  static const unsigned TGT_WNOWAIT = 0x01000000;
322 }; // class Linux
323 
324 } // namespace gem5
325 
326 #endif // __LINUX_HH__
gem5::Linux::TGT_TCGETA
static const unsigned TGT_TCGETA
Definition: linux.hh:178
gem5::Linux::tgt_stat64::st_rdev
uint64_t st_rdev
Definition: linux.hh:92
gem5::Linux::rusage::ru_inblock
int64_t ru_inblock
block input operations
Definition: linux.hh:237
gem5::Linux::rusage::ru_nvcsw
int64_t ru_nvcsw
voluntary context switches
Definition: linux.hh:242
gem5::Linux::tgt_stat::st_flags
uint32_t st_flags
flags
Definition: linux.hh:83
gem5::Linux::TGT_RUSAGE_SELF
static const int TGT_RUSAGE_SELF
For getrusage().
Definition: linux.hh:222
gem5::Linux::tms::tms_utime
int64_t tms_utime
user time
Definition: linux.hh:152
gem5::Linux::TGT_WUNTRACED
static const unsigned TGT_WUNTRACED
Definition: linux.hh:317
gem5::Linux::TGT_WNOWAIT
static const unsigned TGT_WNOWAIT
Definition: linux.hh:321
gem5::Linux::TGT_TCSETAW
static const unsigned TGT_TCSETAW
Definition: linux.hh:179
gem5::Linux::TGT_FUTEX_OP_CMP_EQ
static const unsigned TGT_FUTEX_OP_CMP_EQ
Definition: linux.hh:278
gem5::Linux::tgt_stat64::st_mtimeX
uint64_t st_mtimeX
Definition: linux.hh:105
gem5::Linux::tgt_stat::st_gen
uint32_t st_gen
unknown
Definition: linux.hh:84
gem5::Linux::uid_t
uint32_t uid_t
Definition: linux.hh:60
gem5::Linux::_SYS_NMLN
static const int _SYS_NMLN
Length of strings in struct utsname (plus 1 for null char).
Definition: linux.hh:113
gem5::Linux::tgt_stat64::st_dev
uint64_t st_dev
Definition: linux.hh:90
gem5::Linux::utsname::sysname
char sysname[_SYS_NMLN]
System name.
Definition: linux.hh:118
gem5::Linux::openSpecialFile
static int openSpecialFile(std::string path, Process *process, ThreadContext *tc)
Definition: linux.cc:50
gem5::Linux::TGT_RLIMIT_RSS
static const unsigned TGT_RLIMIT_RSS
Definition: linux.hh:208
gem5::Linux::tgt_stat::_pad1
int32_t _pad1
for alignment
Definition: linux.hh:76
gem5::Linux::isTtyReq
static bool isTtyReq(unsigned req)
Return true for the ioctl codes for which we return ENOTTY without printing a warning,...
Definition: linux.hh:188
gem5::Linux::gid_t
uint32_t gid_t
Definition: linux.hh:61
gem5::Linux::rusage::ru_minflt
int64_t ru_minflt
page reclaims - total vmfaults
Definition: linux.hh:234
gem5::Linux::TGT_AT_FDCWD
static const int TGT_AT_FDCWD
Definition: linux.hh:286
gem5::Linux::timespec
For clock_gettime().
Definition: linux.hh:140
gem5::Linux::TGT_CLONE_FS
static const unsigned TGT_CLONE_FS
Definition: linux.hh:293
gem5::Linux::rusage::ru_msgsnd
int64_t ru_msgsnd
messages sent
Definition: linux.hh:239
gem5::Linux::utsname::release
char release[_SYS_NMLN]
OS release.
Definition: linux.hh:120
gem5::Linux::tgt_iovec
Definition: linux.hh:159
gem5::Linux::TGT_RLIMIT_STACK
static const unsigned TGT_RLIMIT_STACK
Definition: linux.hh:206
gem5::Linux::procSelfMaps
static std::string procSelfMaps(Process *process, ThreadContext *tc)
Definition: linux.cc:109
gem5::Linux::TGT_FUTEX_WAKE_OP
static const unsigned TGT_FUTEX_WAKE_OP
Definition: linux.hh:262
gem5::Linux::tgt_stat::st_mode
uint32_t st_mode
mode
Definition: linux.hh:71
gem5::Linux::TGT_FUTEX_WAKE
static const unsigned TGT_FUTEX_WAKE
Definition: linux.hh:259
random.hh
gem5::Linux::TGT_CLONE_UNTRACED
static const unsigned TGT_CLONE_UNTRACED
Definition: linux.hh:306
gem5::Linux::rusage::ru_majflt
int64_t ru_majflt
page faults
Definition: linux.hh:235
gem5::Linux::TGT_FUTEX_CLOCK_REALTIME_FLAG
static const unsigned TGT_FUTEX_CLOCK_REALTIME_FLAG
Definition: linux.hh:268
gem5::Linux::rusage::ru_nivcsw
int64_t ru_nivcsw
involuntary "
Definition: linux.hh:243
gem5::Linux::tgt_stat64::st_size
int64_t st_size
Definition: linux.hh:93
gem5::Linux::tms
For times().
Definition: linux.hh:150
gem5::Linux::TGT_RLIMIT_RTTIME
static const unsigned TGT_RLIMIT_RTTIME
Definition: linux.hh:218
gem5::Linux::rusage::ru_utime
struct timeval ru_utime
user time used
Definition: linux.hh:228
gem5::Linux::TGT_FIONREAD
static const unsigned TGT_FIONREAD
Definition: linux.hh:180
gem5::Linux::TGT_CLONE_SIGHAND
static const unsigned TGT_CLONE_SIGHAND
Definition: linux.hh:295
gem5::Linux::tgt_stat::st_uid
uint32_t st_uid
owner's user ID
Definition: linux.hh:73
gem5::Linux::tgt_stat64::___unused
int64_t ___unused[3]
Definition: linux.hh:109
gem5::Linux::TGT_FUTEX_CMP_REQUEUE
static const unsigned TGT_FUTEX_CMP_REQUEUE
Definition: linux.hh:261
gem5::Linux::tgt_stat64::st_blocks
uint64_t st_blocks
Definition: linux.hh:94
gem5::Linux::rusage::ru_msgrcv
int64_t ru_msgrcv
messages received
Definition: linux.hh:240
gem5::Linux::TGT_CLONE_NEWNS
static const unsigned TGT_CLONE_NEWNS
Definition: linux.hh:300
gem5::Linux::TGT_RLIMIT_MSGQUEUE
static const unsigned TGT_RLIMIT_MSGQUEUE
Definition: linux.hh:215
gem5::Linux::TGT_FUTEX_PRIVATE_FLAG
static const unsigned TGT_FUTEX_PRIVATE_FLAG
Definition: linux.hh:267
gem5::Linux::TGT_MREMAP_FIXED
static const unsigned TGT_MREMAP_FIXED
Definition: linux.hh:290
gem5::Linux::tgt_stat64::st_atime_nsec
uint64_t st_atime_nsec
Definition: linux.hh:104
gem5::Linux::rusage::ru_ixrss
int64_t ru_ixrss
integral shared memory size
Definition: linux.hh:231
gem5::Linux::tgt_stat::st_nlink
uint32_t st_nlink
link count
Definition: linux.hh:72
gem5::Linux::rlimit::rlim_cur
uint64_t rlim_cur
soft limit
Definition: linux.hh:128
gem5::Linux::tgt_stat64::st_ctime_nsec
uint64_t st_ctime_nsec
Definition: linux.hh:108
gem5::Linux::TGT_FUTEX_WAKE_BITSET
static const unsigned TGT_FUTEX_WAKE_BITSET
Definition: linux.hh:264
gem5::Linux::tgt_stat::st_ino
uint32_t st_ino
inode
Definition: linux.hh:70
gem5::Linux::tgt_stat::st_dev
uint32_t st_dev
device
Definition: linux.hh:69
gem5::Linux::TGT_CLONE_VM
static const unsigned TGT_CLONE_VM
Definition: linux.hh:292
gem5::Linux::timespec::tv_nsec
int64_t tv_nsec
nanoseconds
Definition: linux.hh:143
gem5::Linux::timespec::tv_sec
time_t tv_sec
seconds
Definition: linux.hh:142
gem5::Linux::TGT_RLIMIT_NOFILE
static const unsigned TGT_RLIMIT_NOFILE
Definition: linux.hh:210
gem5::Linux::TGT_WEXITED
static const unsigned TGT_WEXITED
Definition: linux.hh:319
gem5::Linux::TGT_RLIMIT_RTPRIO
static const unsigned TGT_RLIMIT_RTPRIO
Definition: linux.hh:217
gem5::Linux::TGT_CLONE_CHILD_SETTID
static const unsigned TGT_CLONE_CHILD_SETTID
Definition: linux.hh:307
gem5::Linux::TGT_FUTEX_OP_ANDN
static const unsigned TGT_FUTEX_OP_ANDN
Definition: linux.hh:273
gem5::Linux::rusage
Definition: linux.hh:226
gem5::Linux::TGT_RLIMIT_SIGPENDING
static const unsigned TGT_RLIMIT_SIGPENDING
Definition: linux.hh:214
gem5::Linux::tms::tms_cutime
int64_t tms_cutime
user time of children
Definition: linux.hh:154
gem5::Linux::TGT_WSTOPPED
static const unsigned TGT_WSTOPPED
Definition: linux.hh:318
gem5::Linux::TGT_RLIMIT_FSIZE
static const unsigned TGT_RLIMIT_FSIZE
Definition: linux.hh:204
gem5::Linux::TGT_RLIMIT_CORE
static const unsigned TGT_RLIMIT_CORE
Definition: linux.hh:207
gem5::Linux::random
static Random random
Definition: linux.hh:247
gem5::Linux::TGT_FUTEX_OP_SET
static const unsigned TGT_FUTEX_OP_SET
Definition: linux.hh:270
gem5::Linux::TGT_FUTEX_WAIT
static const unsigned TGT_FUTEX_WAIT
Definition: linux.hh:258
gem5::Linux::TGT_FUTEX_OP_ADD
static const unsigned TGT_FUTEX_OP_ADD
Definition: linux.hh:271
gem5::ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Definition: thread_context.hh:93
gem5::Linux::utsname::version
char version[_SYS_NMLN]
OS version.
Definition: linux.hh:121
gem5::Linux::utsname
Interface struct for uname().
Definition: linux.hh:116
gem5::Linux::tgt_stat64
Definition: linux.hh:88
gem5::Linux::tgt_stat64::st_gid
uint32_t st_gid
Definition: linux.hh:98
gem5::Linux::time_t
int64_t time_t
Definition: linux.hh:58
gem5::OperatingSystem
This class encapsulates the types, structures, constants, functions, and syscall-number mappings spec...
Definition: operatingsystem.hh:47
gem5::Linux::TGT_CLONE_NEWNET
static const unsigned TGT_CLONE_NEWNET
Definition: linux.hh:312
gem5::Linux::TGT_FUTEX_WAIT_BITSET
static const unsigned TGT_FUTEX_WAIT_BITSET
Definition: linux.hh:263
gem5::Linux::rusage::ru_maxrss
int64_t ru_maxrss
max rss
Definition: linux.hh:230
gem5::Linux::TGT_FUTEX_OP_CMP_GT
static const unsigned TGT_FUTEX_OP_CMP_GT
Definition: linux.hh:282
gem5::Linux::tms::tms_stime
int64_t tms_stime
system time
Definition: linux.hh:153
gem5::Linux::tgt_stat::st_blksize
uint32_t st_blksize
optimal I/O block size
Definition: linux.hh:81
gem5::Linux::TGT_CLONE_SYSVSEM
static const unsigned TGT_CLONE_SYSVSEM
Definition: linux.hh:301
gem5::Linux::tgt_stat::st_size
int64_t st_size
file size in bytes
Definition: linux.hh:77
gem5::Linux::fd_set::fds_bits
unsigned long fds_bits[LINUX__FD_SETSIZE/(8 *sizeof(long))]
Definition: linux.hh:171
gem5::Linux::TGT_EAGAIN
static const unsigned TGT_EAGAIN
Definition: linux.hh:265
gem5::Linux
This class encapsulates the types, structures, constants, functions, and syscall-number mappings spec...
Definition: linux.hh:49
gem5::Linux::tgt_stat::st_atimeX
uint64_t st_atimeX
time of last access
Definition: linux.hh:78
gem5::Linux::etcPasswd
static std::string etcPasswd(Process *process, ThreadContext *tc)
Definition: linux.cc:102
process.hh
gem5::Linux::rlimit::rlim_max
uint64_t rlim_max
hard limit
Definition: linux.hh:129
gem5::Linux::TGT_TCGETS
static const unsigned TGT_TCGETS
ioctl() command codes.
Definition: linux.hh:177
gem5::Linux::tgt_stat64::__pad0
uint32_t __pad0
Definition: linux.hh:101
gem5::Linux::TGT_RUSAGE_BOTH
static const int TGT_RUSAGE_BOTH
Definition: linux.hh:224
gem5::Linux::TGT_FUTEX_OP_XOR
static const unsigned TGT_FUTEX_OP_XOR
Definition: linux.hh:274
gem5::Linux::TGT_RLIMIT_LOCKS
static const unsigned TGT_RLIMIT_LOCKS
Definition: linux.hh:213
gem5::Linux::tgt_iovec::iov_len
uint64_t iov_len
Definition: linux.hh:162
operatingsystem.hh
gem5::Linux::TGT_RLIMIT_AS
static const unsigned TGT_RLIMIT_AS
Definition: linux.hh:212
gem5::Linux::cpuOnline
static std::string cpuOnline(Process *process, ThreadContext *tc)
Definition: linux.cc:115
gem5::Linux::tgt_stat::st_ctimeX
uint64_t st_ctimeX
time of last status change
Definition: linux.hh:80
gem5::Linux::tgt_stat::st_mtimeX
uint64_t st_mtimeX
time of last modification
Definition: linux.hh:79
gem5::Linux::TGT_CLONE_SETTLS
static const unsigned TGT_CLONE_SETTLS
Definition: linux.hh:302
gem5::Linux::tgt_stat
Stat buffer.
Definition: linux.hh:67
gem5::Linux::utsname::nodename
char nodename[_SYS_NMLN]
Node name.
Definition: linux.hh:119
gem5::Linux::off_t
uint64_t off_t
Definition: linux.hh:57
gem5::Linux::TGT_CLONE_DETACHED
static const unsigned TGT_CLONE_DETACHED
Definition: linux.hh:305
gem5::Linux::utsname::machine
char machine[_SYS_NMLN]
Machine type.
Definition: linux.hh:122
gem5::Linux::TGT_CLONE_CHILD_CLEARTID
static const unsigned TGT_CLONE_CHILD_CLEARTID
Definition: linux.hh:304
gem5::Linux::TGT_CLONE_PARENT
static const unsigned TGT_CLONE_PARENT
Definition: linux.hh:298
gem5::Linux::tgt_iovec::iov_base
uint64_t iov_base
Definition: linux.hh:161
gem5::Linux::TGT_RLIMIT_NICE
static const unsigned TGT_RLIMIT_NICE
Definition: linux.hh:216
gem5::Linux::procMeminfo
static std::string procMeminfo(Process *process, ThreadContext *tc)
Definition: linux.cc:94
gem5::Linux::TGT_FUTEX_REQUEUE
static const unsigned TGT_FUTEX_REQUEUE
Definition: linux.hh:260
gem5::Linux::TGT_FUTEX_OP_CMP_NE
static const unsigned TGT_FUTEX_OP_CMP_NE
Definition: linux.hh:279
gem5::Linux::TGT_CLONE_NEWIPC
static const unsigned TGT_CLONE_NEWIPC
Definition: linux.hh:309
gem5::Linux::TGT_RLIMIT_CPU
static const unsigned TGT_RLIMIT_CPU
Resource constants for getrlimit().
Definition: linux.hh:203
gem5::Linux::TGT_FUTEX_OP_ARG_SHIFT
static const unsigned TGT_FUTEX_OP_ARG_SHIFT
Definition: linux.hh:276
gem5::Linux::rusage::ru_oublock
int64_t ru_oublock
block output operations
Definition: linux.hh:238
gem5::Random
Definition: random.hh:61
gem5::Linux::TGT_FUTEX_OP_CMP_GE
static const unsigned TGT_FUTEX_OP_CMP_GE
Definition: linux.hh:283
gem5::Process
Definition: process.hh:67
gem5::Linux::tms::tms_cstime
int64_t tms_cstime
system time of children
Definition: linux.hh:155
gem5::Linux::M5_SC_CLK_TCK
static const int M5_SC_CLK_TCK
Clock ticks per second, for times().
Definition: linux.hh:147
gem5::Linux::TGT_FUTEX_OP_CMP_LT
static const unsigned TGT_FUTEX_OP_CMP_LT
Definition: linux.hh:280
gem5::Linux::tgt_stat::st_gid
uint32_t st_gid
owner's group ID
Definition: linux.hh:74
gem5::Linux::TGT_CLONE_NEWUSER
static const unsigned TGT_CLONE_NEWUSER
Definition: linux.hh:310
gem5::Linux::tgt_stat64::st_mtime_nsec
uint64_t st_mtime_nsec
Definition: linux.hh:106
gem5::Linux::tgt_stat64::st_uid
uint32_t st_uid
Definition: linux.hh:97
gem5::Linux::tgt_stat64::st_mode
uint32_t st_mode
Definition: linux.hh:96
gem5::Linux::clock_t
int64_t clock_t
Definition: linux.hh:59
gem5::Linux::rusage::ru_nsignals
int64_t ru_nsignals
signals received
Definition: linux.hh:241
gem5::Linux::tgt_stat::st_blocks
int32_t st_blocks
number of blocks allocated
Definition: linux.hh:82
gem5::Linux::TGT_CLONE_THREAD
static const unsigned TGT_CLONE_THREAD
Definition: linux.hh:299
types.hh
gem5::Linux::tgt_stat64::st_nlink
uint32_t st_nlink
Definition: linux.hh:100
gem5::Linux::TGT_RLIM_NLIMITS
static const unsigned TGT_RLIM_NLIMITS
Definition: linux.hh:219
gem5::Linux::TGT_RLIMIT_MEMLOCK
static const unsigned TGT_RLIMIT_MEMLOCK
Definition: linux.hh:211
gem5::Linux::devRandom
static std::string devRandom(Process *process, ThreadContext *tc)
Definition: linux.cc:121
gem5::Linux::TGT_CLONE_PTRACE
static const unsigned TGT_CLONE_PTRACE
Definition: linux.hh:296
gem5::Linux::TGT_CLONE_VFORK
static const unsigned TGT_CLONE_VFORK
Definition: linux.hh:297
gem5::Linux::TGT_MREMAP_MAYMOVE
static const unsigned TGT_MREMAP_MAYMOVE
Definition: linux.hh:289
gem5::Linux::TGT_CLONE_NEWPID
static const unsigned TGT_CLONE_NEWPID
Definition: linux.hh:311
gem5::Linux::tgt_stat64::st_ino
uint64_t st_ino
Definition: linux.hh:91
gem5::Linux::TGT_EWOULDBLOCK
static const unsigned TGT_EWOULDBLOCK
Definition: linux.hh:266
gem5::Linux::TGT_CLONE_IO
static const unsigned TGT_CLONE_IO
Definition: linux.hh:313
gem5::Linux::rlimit
Limit struct for getrlimit/setrlimit.
Definition: linux.hh:126
LINUX__FD_SETSIZE
#define LINUX__FD_SETSIZE
Definition: linux.hh:170
gem5::Linux::tgt_stat::st_rdev
uint32_t st_rdev
device number
Definition: linux.hh:75
gem5::Linux::tgt_stat64::st_ctimeX
uint64_t st_ctimeX
Definition: linux.hh:107
gem5::Linux::rusage::ru_nswap
int64_t ru_nswap
swaps
Definition: linux.hh:236
gem5::Linux::TGT_CLONE_NEWUTS
static const unsigned TGT_CLONE_NEWUTS
Definition: linux.hh:308
gem5::Linux::TGT_WCONTINUED
static const unsigned TGT_WCONTINUED
Definition: linux.hh:320
gem5::Linux::size_t
uint64_t size_t
Basic Linux types.
Definition: linux.hh:56
gem5::Linux::rusage::ru_idrss
int64_t ru_idrss
integral unshared data "
Definition: linux.hh:232
gem5::Linux::TGT_RUSAGE_CHILDREN
static const int TGT_RUSAGE_CHILDREN
Definition: linux.hh:223
gem5::Linux::TGT_FUTEX_OP_CMP_LE
static const unsigned TGT_FUTEX_OP_CMP_LE
Definition: linux.hh:281
gem5::Linux::TGT_CLONE_PARENT_SETTID
static const unsigned TGT_CLONE_PARENT_SETTID
Definition: linux.hh:303
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: decoder.cc:40
gem5::Linux::tgt_stat64::st_blksize
uint32_t st_blksize
Definition: linux.hh:99
gem5::Linux::rusage::ru_isrss
int64_t ru_isrss
integral unshared stack "
Definition: linux.hh:233
gem5::Linux::timeval::tv_sec
int64_t tv_sec
seconds
Definition: linux.hh:135
gem5::Linux::timeval::tv_usec
int64_t tv_usec
microseconds
Definition: linux.hh:136
gem5::Linux::timeval
For gettimeofday().
Definition: linux.hh:133
gem5::Linux::TGT_WNOHANG
static const unsigned TGT_WNOHANG
Definition: linux.hh:316
gem5::Linux::rusage::ru_stime
struct timeval ru_stime
system time used
Definition: linux.hh:229
gem5::Linux::TGT_RLIMIT_DATA
static const unsigned TGT_RLIMIT_DATA
Definition: linux.hh:205
gem5::Linux::TGT_FUTEX_OP_OR
static const unsigned TGT_FUTEX_OP_OR
Definition: linux.hh:272
gem5::Linux::tgt_stat64::st_atimeX
uint64_t st_atimeX
Definition: linux.hh:103
gem5::Linux::TGT_CLONE_FILES
static const unsigned TGT_CLONE_FILES
Definition: linux.hh:294
gem5::Linux::fd_set
Definition: linux.hh:167
gem5::Linux::TGT_RLIMIT_NPROC
static const unsigned TGT_RLIMIT_NPROC
Definition: linux.hh:209

Generated on Wed Jul 28 2021 12:10:21 for gem5 by doxygen 1.8.17