gem5  v19.0.0.0
linux.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010, 2011-2012, 2015 ARM Limited
3  * All rights reserved
4  *
5  * The license below extends only to copyright in the software and shall
6  * not be construed as granting a license to any other intellectual
7  * property including but not limited to intellectual property relating
8  * to a hardware implementation of the functionality of the software
9  * licensed hereunder. You may use the software subject to the license
10  * terms below provided that you ensure that this notice is replicated
11  * unmodified and in its entirety in all distributions of the software,
12  * modified or unmodified, in source code or in binary form.
13  *
14  * Copyright (c) 2003-2005 The Regents of The University of Michigan
15  * Copyright (c) 2007-2008 The Florida State University
16  * All rights reserved.
17  *
18  * Redistribution and use in source and binary forms, with or without
19  * modification, are permitted provided that the following conditions are
20  * met: redistributions of source code must retain the above copyright
21  * notice, this list of conditions and the following disclaimer;
22  * redistributions in binary form must reproduce the above copyright
23  * notice, this list of conditions and the following disclaimer in the
24  * documentation and/or other materials provided with the distribution;
25  * neither the name of the copyright holders nor the names of its
26  * contributors may be used to endorse or promote products derived from
27  * this software without specific prior written permission.
28  *
29  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
30  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
31  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
32  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
33  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
34  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
35  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
36  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40  *
41  * Authors: Ali Saidi
42  * Stephen Hines
43  */
44 
45 #ifndef __ARCH_ARM_LINUX_LINUX_HH__
46 #define __ARCH_ARM_LINUX_LINUX_HH__
47 
48 #include "arch/arm/utility.hh"
49 #include "kern/linux/linux.hh"
50 
51 class ArmLinux : public Linux
52 {
53  public:
55 
56  static void
57  archClone(uint64_t flags,
58  Process *pp, Process *cp,
60  uint64_t stack, uint64_t tls)
61  {
62  ArmISA::copyRegs(ptc, ctc);
63 
64  if (flags & TGT_CLONE_SETTLS) {
65  /* TPIDR_EL0 is architecturally mapped to TPIDRURW, so
66  * this works for both aarch32 and aarch64. */
68  }
69  }
70 };
71 
72 class ArmLinux32 : public ArmLinux
73 {
74  public:
75 
76  static const int TGT_SIGHUP = 0x000001;
77  static const int TGT_SIGINT = 0x000002;
78  static const int TGT_SIGQUIT = 0x000003;
79  static const int TGT_SIGILL = 0x000004;
80  static const int TGT_SIGTRAP = 0x000005;
81  static const int TGT_SIGABRT = 0x000006;
82  static const int TGT_SIGIOT = 0x000006;
83  static const int TGT_SIGBUS = 0x000007;
84  static const int TGT_SIGFPE = 0x000008;
85  static const int TGT_SIGKILL = 0x000009;
86  static const int TGT_SIGUSR1 = 0x00000a;
87  static const int TGT_SIGSEGV = 0x00000b;
88  static const int TGT_SIGUSR2 = 0x00000c;
89  static const int TGT_SIGPIPE = 0x00000d;
90  static const int TGT_SIGALRM = 0x00000e;
91  static const int TGT_SIGTERM = 0x00000f;
92  static const int TGT_SIGSTKFLT = 0x000010;
93  static const int TGT_SIGCHLD = 0x000011;
94  static const int TGT_SIGCONT = 0x000012;
95  static const int TGT_SIGSTOP = 0x000013;
96  static const int TGT_SIGTSTP = 0x000014;
97  static const int TGT_SIGTTIN = 0x000015;
98  static const int TGT_SIGTTOU = 0x000016;
99  static const int TGT_SIGURG = 0x000017;
100  static const int TGT_SIGXCPU = 0x000018;
101  static const int TGT_SIGXFSZ = 0x000019;
102  static const int TGT_SIGVTALRM = 0x00001a;
103  static const int TGT_SIGPROF = 0x00001b;
104  static const int TGT_SIGWINCH = 0x00001c;
105  static const int TGT_SIGIO = 0x00001d;
106  static const int TGT_SIGPOLL = 0x00001d;
107  static const int TGT_SIGPWR = 0x00001e;
108  static const int TGT_SIGSYS = 0x00001f;
109  static const int TGT_SIGUNUSED = 0x00001f;
110 
113  static SyscallFlagTransTable openFlagTable[];
114 
116  static const int NUM_OPEN_FLAGS;
117 
119  typedef uint32_t size_t;
121  typedef uint32_t off_t;
122  typedef int32_t time_t;
123  typedef int32_t clock_t;
125 
127  static const int TGT_O_RDONLY = 000000000;
129  static const int TGT_O_WRONLY = 000000001;
130  static const int TGT_O_RDWR = 000000002;
131  static const int TGT_O_CREAT = 000000100;
132  static const int TGT_O_EXCL = 000000200;
133  static const int TGT_O_NOCTTY = 000000400;
134  static const int TGT_O_TRUNC = 000001000;
135  static const int TGT_O_APPEND = 000002000;
136  static const int TGT_O_NONBLOCK = 000004000;
137  static const int TGT_O_DSYNC = 000010000;
138  static const int TGT_FASYNC = 000020000;
139  static const int TGT_O_DIRECT = 000200000;
140  static const int TGT_O_LARGEFILE = 000400000;
141  static const int TGT_O_DIRECTORY = 000040000;
142  static const int TGT_O_NOFOLLOW = 000100000;
143  static const int TGT_O_NOATIME = 001000000;
144  static const int TGT_O_CLOEXEC = 002000000;
145  static const int TGT_O_SYNC = 004010000;
146  static const int TGT_O_PATH = 010000000;
147 
148 
149  static const unsigned TGT_MAP_SHARED = 0x00001;
150  static const unsigned TGT_MAP_PRIVATE = 0x00002;
151  static const unsigned TGT_MAP_ANON = 0x00020;
152  static const unsigned TGT_MAP_DENYWRITE = 0x00800;
153  static const unsigned TGT_MAP_EXECUTABLE = 0x01000;
154  static const unsigned TGT_MAP_FILE = 0x00000;
155  static const unsigned TGT_MAP_GROWSDOWN = 0x00100;
156  static const unsigned TGT_MAP_HUGETLB = 0x40000;
157  static const unsigned TGT_MAP_LOCKED = 0x02000;
158  static const unsigned TGT_MAP_NONBLOCK = 0x10000;
159  static const unsigned TGT_MAP_NORESERVE = 0x04000;
160  static const unsigned TGT_MAP_POPULATE = 0x08000;
161  static const unsigned TGT_MAP_STACK = 0x20000;
162  static const unsigned TGT_MAP_ANONYMOUS = 0x00020;
163  static const unsigned TGT_MAP_FIXED = 0x00010;
164 
165  static const unsigned NUM_MMAP_FLAGS;
166 
168  static const int TBL_SYSINFO = 12;
169 
171  struct rlimit {
172  uint32_t rlim_cur;
173  uint32_t rlim_max;
174  };
175 
177  struct timeval {
178  int32_t tv_sec;
179  int32_t tv_usec;
180  };
181 
182  struct timespec {
183  int32_t tv_sec;
184  int32_t tv_nsec;
185  };
186 
187  // For writev/readv
188  struct tgt_iovec {
189  uint32_t iov_base; // void *
190  uint32_t iov_len;
191  };
192 
193 
194  typedef struct {
195  uint32_t st_dev;
196  uint32_t st_ino;
197  uint16_t st_mode;
198  uint16_t st_nlink;
199  uint16_t st_uid;
200  uint16_t st_gid;
201  uint32_t st_rdev;
202  uint32_t __pad1;
203  uint32_t st_size;
204  uint32_t st_blksize;
205  uint32_t __pad2;
206  uint32_t st_blocks;
207  uint32_t st_atimeX;
208  uint32_t st_atime_nsec;
209  uint32_t st_mtimeX;
210  uint32_t st_mtime_nsec;
211  uint32_t st_ctimeX;
212  uint32_t st_ctime_nsec;
213  } tgt_stat;
214 
215  typedef struct {
216  uint64_t st_dev;
217  uint8_t __pad0[4];
218  uint32_t __st_ino;
219  uint32_t st_mode;
220  uint32_t st_nlink;
221  uint32_t st_uid;
222  uint32_t st_gid;
223  uint64_t st_rdev;
224  uint8_t __pad3[4];
225  int64_t __attribute__ ((aligned (8))) st_size;
226  uint32_t st_blksize;
227  uint64_t __attribute__ ((aligned (8))) st_blocks;
228  uint32_t st_atimeX;
229  uint32_t st_atime_nsec;
230  uint32_t st_mtimeX;
231  uint32_t st_mtime_nsec;
232  uint32_t st_ctimeX;
233  uint32_t st_ctime_nsec;
234  uint64_t st_ino;
235  } tgt_stat64;
236 
237  typedef struct {
238  int32_t uptime; /* Seconds since boot */
239  uint32_t loads[3]; /* 1, 5, and 15 minute load averages */
240  uint32_t totalram; /* Total usable main memory size */
241  uint32_t freeram; /* Available memory size */
242  uint32_t sharedram; /* Amount of shared memory */
243  uint32_t bufferram; /* Memory used by buffers */
244  uint32_t totalswap; /* Total swap space size */
245  uint32_t freeswap; /* swap space still available */
246  uint16_t procs; /* Number of current processes */
247  uint32_t totalhigh; /* Total high memory size */
248  uint32_t freehigh; /* Available high memory size */
249  uint32_t mem_unit; /* Memory unit size in bytes */
250  } tgt_sysinfo;
251 
253  struct rusage {
254  struct timeval ru_utime;
255  struct timeval ru_stime;
256  int32_t ru_maxrss;
257  int32_t ru_ixrss;
258  int32_t ru_idrss;
259  int32_t ru_isrss;
260  int32_t ru_minflt;
261  int32_t ru_majflt;
262  int32_t ru_nswap;
263  int32_t ru_inblock;
264  int32_t ru_oublock;
265  int32_t ru_msgsnd;
266  int32_t ru_msgrcv;
267  int32_t ru_nsignals;
268  int32_t ru_nvcsw;
269  int32_t ru_nivcsw;
270  };
271 
273  struct tms {
274  int32_t tms_utime;
275  int32_t tms_stime;
276  int32_t tms_cutime;
277  int32_t tms_cstime;
278  };
279 
280  static void
281  archClone(uint64_t flags,
282  Process *pp, Process *cp,
284  uint64_t stack, uint64_t tls)
285  {
286  ArmLinux::archClone(flags, pp, cp, ptc, ctc, stack, tls);
287 
288  if (stack)
289  ctc->setIntReg(ArmISA::INTREG_SP, stack);
290  }
291 };
292 
293 class ArmLinux64 : public ArmLinux
294 {
295  public:
296 
297  static const int TGT_SIGHUP = 0x000001;
298  static const int TGT_SIGINT = 0x000002;
299  static const int TGT_SIGQUIT = 0x000003;
300  static const int TGT_SIGILL = 0x000004;
301  static const int TGT_SIGTRAP = 0x000005;
302  static const int TGT_SIGABRT = 0x000006;
303  static const int TGT_SIGIOT = 0x000006;
304  static const int TGT_SIGBUS = 0x000007;
305  static const int TGT_SIGFPE = 0x000008;
306  static const int TGT_SIGKILL = 0x000009;
307  static const int TGT_SIGUSR1 = 0x00000a;
308  static const int TGT_SIGSEGV = 0x00000b;
309  static const int TGT_SIGUSR2 = 0x00000c;
310  static const int TGT_SIGPIPE = 0x00000d;
311  static const int TGT_SIGALRM = 0x00000e;
312  static const int TGT_SIGTERM = 0x00000f;
313  static const int TGT_SIGSTKFLT = 0x000010;
314  static const int TGT_SIGCHLD = 0x000011;
315  static const int TGT_SIGCONT = 0x000012;
316  static const int TGT_SIGSTOP = 0x000013;
317  static const int TGT_SIGTSTP = 0x000014;
318  static const int TGT_SIGTTIN = 0x000015;
319  static const int TGT_SIGTTOU = 0x000016;
320  static const int TGT_SIGURG = 0x000017;
321  static const int TGT_SIGXCPU = 0x000018;
322  static const int TGT_SIGXFSZ = 0x000019;
323  static const int TGT_SIGVTALRM = 0x00001a;
324  static const int TGT_SIGPROF = 0x00001b;
325  static const int TGT_SIGWINCH = 0x00001c;
326  static const int TGT_SIGIO = 0x00001d;
327  static const int TGT_SIGPOLL = 0x00001d;
328  static const int TGT_SIGPWR = 0x00001e;
329  static const int TGT_SIGSYS = 0x00001f;
330  static const int TGT_SIGUNUSED = 0x00001f;
331 
334  static SyscallFlagTransTable openFlagTable[];
335 
337  static const int NUM_OPEN_FLAGS;
338 
340  typedef uint64_t size_t;
342  typedef uint64_t off_t;
343  typedef int64_t time_t;
344  typedef int64_t clock_t;
346 
348  static const int TGT_O_RDONLY = 000000000;
350  static const int TGT_O_WRONLY = 000000001;
351  static const int TGT_O_RDWR = 000000002;
352  static const int TGT_O_CREAT = 000000100;
353  static const int TGT_O_EXCL = 000000200;
354  static const int TGT_O_NOCTTY = 000000400;
355  static const int TGT_O_TRUNC = 000001000;
356  static const int TGT_O_APPEND = 000002000;
357  static const int TGT_O_NONBLOCK = 000004000;
358  static const int TGT_O_DSYNC = 000010000;
359  static const int TGT_FASYNC = 000020000;
360  static const int TGT_O_DIRECT = 000200000;
361  static const int TGT_O_LARGEFILE = 000400000;
362  static const int TGT_O_DIRECTORY = 000040000;
363  static const int TGT_O_NOFOLLOW = 000100000;
364  static const int TGT_O_NOATIME = 001000000;
365  static const int TGT_O_CLOEXEC = 002000000;
366  static const int TGT_O_SYNC = 004010000;
367  static const int TGT_O_PATH = 010000000;
368 
369 
371  static SyscallFlagTransTable mmapFlagTable[];
372 
373  static const unsigned TGT_MAP_SHARED = 0x00001;
374  static const unsigned TGT_MAP_PRIVATE = 0x00002;
375  static const unsigned TGT_MAP_ANON = 0x00020;
376  static const unsigned TGT_MAP_DENYWRITE = 0x00800;
377  static const unsigned TGT_MAP_EXECUTABLE = 0x01000;
378  static const unsigned TGT_MAP_FILE = 0x00000;
379  static const unsigned TGT_MAP_GROWSDOWN = 0x00100;
380  static const unsigned TGT_MAP_HUGETLB = 0x40000;
381  static const unsigned TGT_MAP_LOCKED = 0x02000;
382  static const unsigned TGT_MAP_NONBLOCK = 0x10000;
383  static const unsigned TGT_MAP_NORESERVE = 0x04000;
384  static const unsigned TGT_MAP_POPULATE = 0x08000;
385  static const unsigned TGT_MAP_STACK = 0x20000;
386  static const unsigned TGT_MAP_ANONYMOUS = 0x00020;
387  static const unsigned TGT_MAP_FIXED = 0x00010;
388 
389  static const unsigned NUM_MMAP_FLAGS;
390 
392  static const int TGT_RUSAGE_SELF = 0;
394  static const int TGT_RUSAGE_CHILDREN = -1;
395  static const int TGT_RUSAGE_BOTH = -2;
397 
399  static const unsigned TIOCGETP_ = 0x5401;
401  static const unsigned TIOCSETP_ = 0x80067409;
402  static const unsigned TIOCSETN_ = 0x8006740a;
403  static const unsigned TIOCSETC_ = 0x80067411;
404  static const unsigned TIOCGETC_ = 0x40067412;
405  static const unsigned FIONREAD_ = 0x4004667f;
406  static const unsigned TIOCISATTY_ = 0x2000745e;
407  static const unsigned TIOCGETS_ = 0x402c7413;
408  static const unsigned TIOCGETA_ = 0x5405;
409  static const unsigned TCSETAW_ = 0x5407; // 2.6.15 kernel
411 
413  static const int TBL_SYSINFO = 12;
414 
428  };
429 
431  struct rlimit {
432  uint64_t rlim_cur;
433  uint64_t rlim_max;
434  };
435 
437  struct timeval {
438  int64_t tv_sec;
439  int64_t tv_usec;
440  };
441 
442  struct timespec {
443  int64_t tv_sec;
444  int64_t tv_nsec;
445  };
446 
447  // For writev/readv
448  struct tgt_iovec {
449  uint64_t iov_base; // void *
450  uint64_t iov_len;
451  };
452 
453  typedef struct {
454  uint64_t st_dev;
455  uint64_t st_ino;
456  uint64_t st_nlink;
457  uint32_t st_mode;
458  uint32_t st_uid;
459  uint32_t st_gid;
460  uint32_t __pad0;
461  uint64_t st_rdev;
462  uint64_t st_size;
463  uint64_t st_blksize;
464  uint64_t st_blocks;
465  uint64_t st_atimeX;
466  uint64_t st_atime_nsec;
467  uint64_t st_mtimeX;
468  uint64_t st_mtime_nsec;
469  uint64_t st_ctimeX;
470  uint64_t st_ctime_nsec;
471  } tgt_stat;
472 
473  typedef struct {
474  uint64_t st_dev;
475  uint64_t st_ino;
476  uint32_t st_mode;
477  uint32_t st_nlink;
478  uint32_t st_uid;
479  uint32_t st_gid;
480  uint32_t __pad0;
481  uint64_t st_rdev;
482  uint64_t st_size;
483  uint64_t st_blksize;
484  uint64_t st_blocks;
485  uint64_t st_atimeX;
486  uint64_t st_atime_nsec;
487  uint64_t st_mtimeX;
488  uint64_t st_mtime_nsec;
489  uint64_t st_ctimeX;
490  uint64_t st_ctime_nsec;
491  } tgt_stat64;
492 
493  typedef struct {
494  int64_t uptime; /* Seconds since boot */
495  uint64_t loads[3]; /* 1, 5, and 15 minute load averages */
496  uint64_t totalram; /* Total usable main memory size */
497  uint64_t freeram; /* Available memory size */
498  uint64_t sharedram; /* Amount of shared memory */
499  uint64_t bufferram; /* Memory used by buffers */
500  uint64_t totalswap; /* Total swap space size */
501  uint64_t freeswap; /* swap space still available */
502  uint16_t procs; /* Number of current processes */
503  uint16_t pad;
504  uint64_t totalhigh; /* Total high memory size */
505  uint64_t freehigh; /* Available high memory size */
506  uint32_t mem_unit; /* Memory unit size in bytes */
507  } tgt_sysinfo;
508 
510  struct rusage {
511  struct timeval ru_utime;
512  struct timeval ru_stime;
513  int64_t ru_maxrss;
514  int64_t ru_ixrss;
515  int64_t ru_idrss;
516  int64_t ru_isrss;
517  int64_t ru_minflt;
518  int64_t ru_majflt;
519  int64_t ru_nswap;
520  int64_t ru_inblock;
521  int64_t ru_oublock;
522  int64_t ru_msgsnd;
523  int64_t ru_msgrcv;
524  int64_t ru_nsignals;
525  int64_t ru_nvcsw;
526  int64_t ru_nivcsw;
527  };
528 
530  struct tms {
531  int64_t tms_utime;
532  int64_t tms_stime;
533  int64_t tms_cutime;
534  int64_t tms_cstime;
535  };
536 
537  static void archClone(uint64_t flags,
538  Process *pp, Process *cp,
540  uint64_t stack, uint64_t tls)
541  {
542  ArmLinux::archClone(flags, pp, cp, ptc, ctc, stack, tls);
543 
544  if (stack)
545  ctc->setIntReg(ArmISA::INTREG_SP0, stack);
546  }
547 };
548 
549 #endif
int32_t tv_sec
seconds
Definition: linux.hh:183
uint32_t off_t
Definition: linux.hh:121
uint32_t __pad0
Definition: linux.hh:460
int32_t ru_msgrcv
messages received
Definition: linux.hh:266
For gettimeofday().
Definition: linux.hh:437
virtual void setMiscReg(RegIndex misc_reg, RegVal val)=0
Limit struct for getrlimit/setrlimit.
Definition: linux.hh:431
uint64_t rlim_max
hard limit
Definition: linux.hh:433
int64_t ru_idrss
integral unshared data "
Definition: linux.hh:515
static const unsigned TGT_RLIMIT_FSIZE
Definition: linux.hh:194
static void archClone(uint64_t flags, Process *pp, Process *cp, ThreadContext *ptc, ThreadContext *ctc, uint64_t stack, uint64_t tls)
Definition: linux.hh:57
uint32_t iov_len
Definition: linux.hh:190
int32_t ru_ixrss
integral shared memory size
Definition: linux.hh:257
int32_t tms_cstime
system time of children
Definition: linux.hh:277
int64_t ru_maxrss
max rss
Definition: linux.hh:513
uint16_t st_nlink
Definition: linux.hh:198
int64_t tv_nsec
nanoseconds
Definition: linux.hh:444
int32_t ru_nswap
swaps
Definition: linux.hh:262
uint64_t iov_len
Definition: linux.hh:450
int64_t ru_nsignals
signals received
Definition: linux.hh:524
int64_t ru_nswap
swaps
Definition: linux.hh:519
int32_t ru_idrss
integral unshared data "
Definition: linux.hh:258
int32_t tv_nsec
nanoseconds
Definition: linux.hh:184
int32_t ru_nvcsw
voluntary context switches
Definition: linux.hh:268
static const unsigned NUM_MMAP_FLAGS
Definition: linux.hh:389
uint64_t st_atimeX
Definition: linux.hh:465
uint32_t st_blksize
Definition: linux.hh:204
int32_t ru_minflt
page reclaims - total vmfaults
Definition: linux.hh:260
const char * __attribute__((weak)) m5MainCommands[]
static const unsigned TGT_RLIMIT_DATA
Definition: linux.hh:195
uint32_t st_gid
Definition: linux.hh:459
uint64_t st_mtime_nsec
Definition: linux.hh:468
For getrusage().
Definition: linux.hh:510
int64_t ru_msgrcv
messages received
Definition: linux.hh:523
uint64_t off_t
Definition: linux.hh:342
uint32_t st_ctimeX
Definition: linux.hh:211
uint32_t st_mtime_nsec
Definition: linux.hh:210
uint64_t st_atime_nsec
Definition: linux.hh:486
uint16_t st_uid
Definition: linux.hh:199
static const unsigned TGT_RLIMIT_RSS
Definition: linux.hh:198
uint64_t st_mtime_nsec
Definition: linux.hh:488
int64_t tms_cstime
system time of children
Definition: linux.hh:534
For times().
Definition: linux.hh:273
int32_t ru_nsignals
signals received
Definition: linux.hh:267
int32_t ru_oublock
block output operations
Definition: linux.hh:264
int64_t time_t
Definition: linux.hh:343
For gettimeofday().
Definition: linux.hh:177
static const int NUM_OPEN_FLAGS
Number of entries in openFlagTable[].
Definition: linux.hh:337
static void archClone(uint64_t flags, Process *pp, Process *cp, ThreadContext *ptc, ThreadContext *ctc, uint64_t stack, uint64_t tls)
Definition: linux.hh:281
int64_t clock_t
Definition: linux.hh:344
Definition: cprintf.cc:42
uint64_t st_ctime_nsec
Definition: linux.hh:490
uint64_t st_blocks
Definition: linux.hh:464
static const unsigned NUM_MMAP_FLAGS
Definition: linux.hh:165
int32_t clock_t
Definition: linux.hh:123
int32_t ru_majflt
page faults
Definition: linux.hh:261
ThreadContext is the external interface to all thread state for anything outside of the CPU...
For getrusage().
Definition: linux.hh:253
int64_t ru_ixrss
integral shared memory size
Definition: linux.hh:514
uint16_t st_gid
Definition: linux.hh:200
uint32_t iov_base
Definition: linux.hh:189
static const unsigned TGT_RLIMIT_MEMLOCK
Definition: linux.hh:201
int64_t ru_isrss
integral unshared stack "
Definition: linux.hh:516
uint32_t st_blocks
Definition: linux.hh:206
uint32_t rlim_cur
soft limit
Definition: linux.hh:172
uint32_t rlim_max
hard limit
Definition: linux.hh:173
static const unsigned TGT_RLIMIT_AS
Definition: linux.hh:202
int64_t tms_utime
user time
Definition: linux.hh:531
uint64_t st_blksize
Definition: linux.hh:463
int64_t tv_sec
seconds
Definition: linux.hh:438
uint64_t st_mtimeX
Definition: linux.hh:487
uint64_t st_nlink
Definition: linux.hh:456
uint64_t st_ctimeX
Definition: linux.hh:489
static const int TGT_RUSAGE_SELF
For getrusage().
Definition: linux.hh:212
static const unsigned TGT_RLIMIT_NOFILE
Definition: linux.hh:200
int64_t ru_oublock
block output operations
Definition: linux.hh:521
int32_t ru_inblock
block input operations
Definition: linux.hh:263
int64_t ru_nivcsw
involuntary "
Definition: linux.hh:526
uint64_t st_blocks
Definition: linux.hh:484
uint32_t st_mode
Definition: linux.hh:457
int32_t tv_usec
microseconds
Definition: linux.hh:179
int32_t ru_nivcsw
involuntary "
Definition: linux.hh:269
Limit struct for getrlimit/setrlimit.
Definition: linux.hh:171
int32_t time_t
Definition: linux.hh:122
ByteOrder
Definition: types.hh:247
uint64_t st_atimeX
Definition: linux.hh:485
static const unsigned TGT_CLONE_SETTLS
Definition: linux.hh:286
void tgt_stat
Stat buffer.
uint64_t st_rdev
Definition: linux.hh:461
uint32_t st_rdev
Definition: linux.hh:201
int64_t tv_usec
microseconds
Definition: linux.hh:439
static const unsigned TGT_RLIMIT_CORE
Definition: linux.hh:197
uint64_t iov_base
Definition: linux.hh:449
static const unsigned TGT_RLIMIT_NPROC
Definition: linux.hh:199
int64_t ru_nvcsw
voluntary context switches
Definition: linux.hh:525
uint64_t st_size
Definition: linux.hh:462
uint64_t st_blksize
Definition: linux.hh:483
rlimit_resources
Resource enumeration for getrlimit().
Definition: linux.hh:416
int64_t tms_cutime
user time of children
Definition: linux.hh:533
static const unsigned TGT_RLIMIT_CPU
Resource constants for getrlimit().
Definition: linux.hh:193
static const unsigned TGT_RLIMIT_STACK
Definition: linux.hh:196
int64_t ru_msgsnd
messages sent
Definition: linux.hh:522
uint32_t st_size
Definition: linux.hh:203
virtual void setIntReg(RegIndex reg_idx, RegVal val)=0
uint32_t st_ino
Definition: linux.hh:196
uint64_t st_ctimeX
Definition: linux.hh:469
uint32_t st_dev
Definition: linux.hh:195
int64_t ru_majflt
page faults
Definition: linux.hh:518
This struct is used to build target-OS-dependent tables that map the target's flags to the host's fla...
Bitfield< 17, 16 > stack
Definition: misc.hh:589
uint64_t rlim_cur
soft limit
Definition: linux.hh:432
int64_t ru_inblock
block input operations
Definition: linux.hh:520
int64_t tms_stime
system time
Definition: linux.hh:532
uint32_t st_atime_nsec
Definition: linux.hh:208
uint64_t st_dev
Definition: linux.hh:454
Bitfield< 7, 0 > ptc
Definition: mt_constants.hh:56
int32_t ru_isrss
integral unshared stack "
Definition: linux.hh:259
int32_t ru_maxrss
max rss
Definition: linux.hh:256
int32_t tms_stime
system time
Definition: linux.hh:275
static const int TGT_RUSAGE_BOTH
Definition: linux.hh:214
int32_t tms_utime
user time
Definition: linux.hh:274
int64_t tv_sec
seconds
Definition: linux.hh:443
uint32_t __pad1
Definition: linux.hh:202
static const unsigned TGT_RLIMIT_LOCKS
Definition: linux.hh:203
uint16_t st_mode
Definition: linux.hh:197
uint32_t st_atimeX
Definition: linux.hh:207
int32_t ru_msgsnd
messages sent
Definition: linux.hh:265
static const ByteOrder byteOrder
Definition: linux.hh:54
static const int TGT_RUSAGE_CHILDREN
Definition: linux.hh:213
int32_t tms_cutime
user time of children
Definition: linux.hh:276
uint32_t st_mtimeX
Definition: linux.hh:209
uint32_t __pad2
Definition: linux.hh:205
uint64_t st_mtimeX
Definition: linux.hh:467
uint32_t st_uid
Definition: linux.hh:458
static const int NUM_OPEN_FLAGS
Number of entries in openFlagTable[].
Definition: linux.hh:116
uint64_t st_ctime_nsec
Definition: linux.hh:470
void copyRegs(ThreadContext *src, ThreadContext *dest)
Definition: utility.cc:157
static void archClone(uint64_t flags, Process *pp, Process *cp, ThreadContext *ptc, ThreadContext *ctc, uint64_t stack, uint64_t tls)
Definition: linux.hh:537
For times().
Definition: linux.hh:530
uint64_t st_atime_nsec
Definition: linux.hh:466
int32_t tv_sec
seconds
Definition: linux.hh:178
uint64_t size_t
Basic Linux types.
Definition: linux.hh:55
uint32_t st_ctime_nsec
Definition: linux.hh:212
int64_t ru_minflt
page reclaims - total vmfaults
Definition: linux.hh:517
uint64_t st_ino
Definition: linux.hh:455

Generated on Fri Feb 28 2020 16:26:56 for gem5 by doxygen 1.8.13