gem5 v24.1.0.1
Loading...
Searching...
No Matches
linux.hh
Go to the documentation of this file.
1/*
2 * Copyright (c) 2024 Arm Limited
3 *
4 * The license below extends only to copyright in the software and shall
5 * not be construed as granting a license to any other intellectual
6 * property including but not limited to intellectual property relating
7 * to a hardware implementation of the functionality of the software
8 * licensed hereunder. You may use the software subject to the license
9 * terms below provided that you ensure that this notice is replicated
10 * unmodified and in its entirety in all distributions of the software,
11 * modified or unmodified, in source code or in binary form.
12 *
13 * Copyright (c) 2006 The Regents of The University of Michigan
14 * All rights reserved.
15 *
16 * Redistribution and use in source and binary forms, with or without
17 * modification, are permitted provided that the following conditions are
18 * met: redistributions of source code must retain the above copyright
19 * notice, this list of conditions and the following disclaimer;
20 * redistributions in binary form must reproduce the above copyright
21 * notice, this list of conditions and the following disclaimer in the
22 * documentation and/or other materials provided with the distribution;
23 * neither the name of the copyright holders nor the names of its
24 * contributors may be used to endorse or promote products derived from
25 * this software without specific prior written permission.
26 *
27 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
28 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
29 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
30 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
31 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
32 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
33 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
34 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
35 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
36 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 */
39
40#ifndef __ARCH_MIPS_LINUX_LINUX_HH__
41#define __ARCH_MIPS_LINUX_LINUX_HH__
42
43#include <map>
44
46#include "kern/linux/linux.hh"
47
48namespace gem5
49{
50
51class MipsLinux : public Linux, public OpenFlagTable<MipsLinux>
52{
53 public:
54
55 static const ByteOrder byteOrder = ByteOrder::little;
56
57 static const int TGT_SIGHUP = 0x000001;
58 static const int TGT_SIGINT = 0x000002;
59 static const int TGT_SIGQUIT = 0x000003;
60 static const int TGT_SIGILL = 0x000004;
61 static const int TGT_SIGTRAP = 0x000005;
62 static const int TGT_SIGIOT = 0x000006;
63 static const int TGT_SIGABRT = 0x000006;
64 static const int TGT_SIGEMT = 0x000007;
65 static const int TGT_SIGFPE = 0x000008;
66 static const int TGT_SIGKILL = 0x000009;
67 static const int TGT_SIGBUS = 0x00000a;
68 static const int TGT_SIGSEGV = 0x00000b;
69 static const int TGT_SIGSYS = 0x00000c;
70 static const int TGT_SIGPIPE = 0x00000d;
71 static const int TGT_SIGALRM = 0x00000e;
72 static const int TGT_SIGTERM = 0x00000f;
73 static const int TGT_SIGUSR1 = 0x000010;
74 static const int TGT_SIGUSR2 = 0x000011;
75 static const int TGT_SIGCHLD = 0x000012;
76 static const int TGT_SIGCLD = 0x000012;
77 static const int TGT_SIGPWR = 0x000013;
78 static const int TGT_SIGWINCH = 0x000014;
79 static const int TGT_SIGURG = 0x000015;
80 static const int TGT_SIGIO = 0x000016;
81 static const int TGT_SIGPOLL = 0x000016;
82 static const int TGT_SIGSTOP = 0x000017;
83 static const int TGT_SIGTSTP = 0x000018;
84 static const int TGT_SIGCONT = 0x000019;
85 static const int TGT_SIGTTIN = 0x00001a;
86 static const int TGT_SIGTTOU = 0x00001b;
87 static const int TGT_SIGVTALRM = 0x00001c;
88 static const int TGT_SIGPROF = 0x00001d;
89 static const int TGT_SIGXCPU = 0x00001e;
90 static const int TGT_SIGXFSZ = 0x00001f;
91
93
94 static constexpr int TGT_O_RDONLY = 0x00000000;
95 static constexpr int TGT_O_WRONLY = 0x00000001;
96 static constexpr int TGT_O_RDWR = 0x00000002;
97 static constexpr int TGT_O_CREAT = 0x00000100;
98 static constexpr int TGT_O_EXCL = 0x00000400;
99 static constexpr int TGT_O_NOCTTY = 0x00000800;
100 static constexpr int TGT_O_TRUNC = 0x00000200;
101 static constexpr int TGT_O_APPEND = 0x00000008;
102 static constexpr int TGT_O_NONBLOCK = 0x00000080;
103 static constexpr int TGT_O_DSYNC = 0x00000010;
104 static constexpr int TGT_FASYNC = 0x00001000;
105 static constexpr int TGT_O_DIRECT = 0x00008000;
106 static constexpr int TGT_O_LARGEFILE = 0x00002000;
107 static constexpr int TGT_O_DIRECTORY = 0x00010000;
108 static constexpr int TGT_O_NOFOLLOW = 0x00020000;
109 static constexpr int TGT_O_NOATIME = 0x00040000;
110 static constexpr int TGT_O_CLOEXEC = 0x00080000;
111 static constexpr int TGT_O_SYNC = 0x00004010;
112 static constexpr int TGT_O_PATH = 0x00200000;
114
115 static constexpr unsigned TGT_MAP_SHARED = 0x00001;
116 static constexpr unsigned TGT_MAP_PRIVATE = 0x00002;
117 static constexpr unsigned TGT_MAP_ANON = 0x00800;
118 static constexpr unsigned TGT_MAP_DENYWRITE = 0x02000;
119 static constexpr unsigned TGT_MAP_EXECUTABLE = 0x04000;
120 static constexpr unsigned TGT_MAP_FILE = 0x00000;
121 static constexpr unsigned TGT_MAP_GROWSDOWN = 0x01000;
122 static constexpr unsigned TGT_MAP_HUGETLB = 0x80000;
123 static constexpr unsigned TGT_MAP_LOCKED = 0x08000;
124 static constexpr unsigned TGT_MAP_NONBLOCK = 0x20000;
125 static constexpr unsigned TGT_MAP_NORESERVE = 0x00400;
126 static constexpr unsigned TGT_MAP_POPULATE = 0x10000;
127 static constexpr unsigned TGT_MAP_STACK = 0x40000;
128 static constexpr unsigned TGT_MAP_ANONYMOUS = 0x00800;
129 static constexpr unsigned TGT_MAP_FIXED = 0x00010;
130
132
133 static const unsigned GSI_PLATFORM_NAME = 103;
134 static const unsigned GSI_CPU_INFO = 59;
135 static const unsigned GSI_PROC_TYPE = 60;
136 static const unsigned GSI_MAX_CPU = 30;
137 static const unsigned GSI_CPUS_IN_BOX = 55;
138 static const unsigned GSI_PHYSMEM = 19;
139 static const unsigned GSI_CLK_TCK = 42;
141
143
144 static const unsigned SSI_IEEE_FP_CONTROL = 14;
146
148
149 static const unsigned TGT_TCGETA = 0x5401;
150 static const unsigned TGT_TCSETAW = 0x5403;
151 static const unsigned TGT_TCGETS = 0x540d;
152 static const unsigned TGT_FIONREAD = 0x467f;
153 static const unsigned TGT_TIOCGETP = 0x7408;
154 static const unsigned TGT_TIOCSETP = 0x7409;
155 static const unsigned TGT_TIOCSETN = 0x740a;
157
158 static bool
159 isTtyReq(unsigned req)
160 {
161 switch (req) {
162 case TGT_TIOCGETP:
163 case TGT_TIOCSETP:
164 case TGT_TIOCSETN:
165 case TGT_FIONREAD:
166 case TGT_TCGETS:
167 case TGT_TCGETA:
168 case TGT_TCSETAW:
169 return true;
170 default:
171 return false;
172 }
173 }
174
176 static const int TBL_SYSINFO = 12;
177
179 static const unsigned TGT_RLIMIT_NPROC = 8;
180 static const unsigned TGT_RLIMIT_AS = 6;
181 static const unsigned TGT_RLIMIT_RSS = 7;
182 static const unsigned TGT_RLIMIT_NOFILE = 5;
183 static const unsigned TGT_RLIMIT_MEMLOCK = 9;
184
188 static const int NUM_ROOT_PROCS = 2;
189
191 {
192 int32_t uptime; /* Seconds since boot */
193 uint32_t loads[3]; /* 1, 5, and 15 minute load averages */
194 uint32_t totalram; /* Total usable main memory size */
195 uint32_t freeram; /* Available memory size */
196 uint32_t sharedram; /* Amount of shared memory */
197 uint32_t bufferram; /* Memory used by buffers */
198 uint32_t totalswap; /* Total swap space size */
199 uint32_t freeswap; /* swap space still available */
200 uint16_t procs; /* Number of current processes */
201 uint32_t totalhigh; /* Total high memory size */
202 uint32_t freehigh; /* Available high memory size */
203 uint32_t mem_unit; /* Memory unit size in bytes */
204 };
205
206 typedef uint32_t size_t;
207 typedef int32_t off_t;
208};
209
210} // namespace gem5
211
212#endif
This class encapsulates the types, structures, constants, functions, and syscall-number mappings spec...
Definition linux.hh:62
static const unsigned TGT_RLIMIT_NOFILE
Definition linux.hh:182
static const unsigned TGT_RLIMIT_NPROC
Resource constants for getrlimit() (overide some generics).
Definition linux.hh:179
int32_t off_t
Definition linux.hh:207
static bool isTtyReq(unsigned req)
Definition linux.hh:159
static constexpr unsigned TGT_MAP_ANON
Definition linux.hh:117
static constexpr unsigned TGT_MAP_LOCKED
Definition linux.hh:123
static const int TGT_SIGXCPU
Definition linux.hh:89
static const unsigned TGT_RLIMIT_MEMLOCK
Definition linux.hh:183
static const int TGT_SIGPIPE
Definition linux.hh:70
static const int TGT_SIGCONT
Definition linux.hh:84
static constexpr int TGT_O_WRONLY
O_WRONLY.
Definition linux.hh:95
static const int TGT_SIGTTIN
Definition linux.hh:85
static constexpr unsigned TGT_MAP_GROWSDOWN
Definition linux.hh:121
static constexpr unsigned TGT_MAP_SHARED
Definition linux.hh:115
static constexpr int TGT_O_CLOEXEC
O_CLOEXEC.
Definition linux.hh:110
static const int TGT_SIGFPE
Definition linux.hh:65
static const unsigned GSI_MAX_CPU
max # cpu's on this machine
Definition linux.hh:136
static constexpr unsigned TGT_MAP_NONBLOCK
Definition linux.hh:124
static const int TGT_SIGEMT
Definition linux.hh:64
static const unsigned GSI_PHYSMEM
Physical memory in KB.
Definition linux.hh:138
static const int TGT_SIGTERM
Definition linux.hh:72
static const int TGT_SIGBUS
Definition linux.hh:67
static constexpr unsigned TGT_MAP_PRIVATE
Definition linux.hh:116
static const unsigned TGT_RLIMIT_AS
Definition linux.hh:180
static constexpr unsigned TGT_MAP_NORESERVE
Definition linux.hh:125
static const int TGT_SIGSEGV
Definition linux.hh:68
static const int TGT_SIGABRT
Definition linux.hh:63
static constexpr int TGT_O_DSYNC
O_DSYNC.
Definition linux.hh:103
static const int TBL_SYSINFO
For table().
Definition linux.hh:176
static constexpr int TGT_FASYNC
O_FASYNC.
Definition linux.hh:104
static const unsigned GSI_PLATFORM_NAME
For getsysinfo().
Definition linux.hh:133
static const int TGT_SIGTRAP
Definition linux.hh:61
static const int TGT_SIGIO
Definition linux.hh:80
static const unsigned SSI_IEEE_FP_CONTROL
For setsysinfo().
Definition linux.hh:144
static const unsigned GSI_CPUS_IN_BOX
number of CPUs in system
Definition linux.hh:137
static const int TGT_SIGTTOU
Definition linux.hh:86
static const unsigned TGT_FIONREAD
Definition linux.hh:152
static constexpr int TGT_O_LARGEFILE
O_LARGEFILE.
Definition linux.hh:106
static const int TGT_SIGSYS
Definition linux.hh:69
static const int TGT_SIGURG
Definition linux.hh:79
static const int TGT_SIGPOLL
Definition linux.hh:81
static const int TGT_SIGWINCH
Definition linux.hh:78
static const int NUM_ROOT_PROCS
Offset used to make sure that processes don't assign themselves to process IDs reserved for the root ...
Definition linux.hh:188
static const int TGT_SIGVTALRM
Definition linux.hh:87
static const int TGT_SIGCHLD
Definition linux.hh:75
static const int TGT_SIGPWR
Definition linux.hh:77
static const int TGT_SIGUSR2
Definition linux.hh:74
static const unsigned TGT_RLIMIT_RSS
Definition linux.hh:181
static const int TGT_SIGALRM
Definition linux.hh:71
static constexpr int TGT_O_NOFOLLOW
O_NOFOLLOW.
Definition linux.hh:108
static constexpr int TGT_O_NOATIME
O_NOATIME.
Definition linux.hh:109
static constexpr int TGT_O_TRUNC
O_TRUNC.
Definition linux.hh:100
static const int TGT_SIGILL
Definition linux.hh:60
static const unsigned TGT_TIOCSETN
Definition linux.hh:155
static constexpr int TGT_O_NONBLOCK
O_NONBLOCK.
Definition linux.hh:102
static constexpr int TGT_O_PATH
O_PATH.
Definition linux.hh:112
static constexpr unsigned TGT_MAP_FILE
Definition linux.hh:120
uint32_t size_t
Definition linux.hh:206
static const unsigned TGT_TIOCSETP
Definition linux.hh:154
static const unsigned TGT_TCSETAW
Definition linux.hh:150
static constexpr int TGT_O_RDONLY
open(2) flag values.
Definition linux.hh:94
static constexpr unsigned TGT_MAP_STACK
Definition linux.hh:127
static const int TGT_SIGXFSZ
Definition linux.hh:90
static constexpr int TGT_O_EXCL
O_EXCL.
Definition linux.hh:98
static constexpr unsigned TGT_MAP_EXECUTABLE
Definition linux.hh:119
static constexpr int TGT_O_APPEND
O_APPEND.
Definition linux.hh:101
static constexpr int TGT_O_NOCTTY
O_NOCTTY.
Definition linux.hh:99
static constexpr int TGT_O_DIRECT
O_DIRECT.
Definition linux.hh:105
static const int TGT_SIGHUP
Definition linux.hh:57
static const int TGT_SIGIOT
Definition linux.hh:62
static const ByteOrder byteOrder
Definition linux.hh:55
static const int TGT_SIGQUIT
Definition linux.hh:59
static const unsigned TGT_TCGETA
ioctl() command codes.
Definition linux.hh:149
static constexpr unsigned TGT_MAP_DENYWRITE
Definition linux.hh:118
static const int TGT_SIGUSR1
Definition linux.hh:73
static constexpr unsigned TGT_MAP_FIXED
Definition linux.hh:129
static constexpr int TGT_O_DIRECTORY
O_DIRECTORY.
Definition linux.hh:107
static const int TGT_SIGCLD
Definition linux.hh:76
static const int TGT_SIGKILL
Definition linux.hh:66
static constexpr int TGT_O_RDWR
O_RDWR.
Definition linux.hh:96
static const unsigned TGT_TCGETS
Definition linux.hh:151
static const int TGT_SIGPROF
Definition linux.hh:88
static const int TGT_SIGTSTP
Definition linux.hh:83
static const int TGT_SIGSTOP
Definition linux.hh:82
static const unsigned GSI_PROC_TYPE
get proc_type
Definition linux.hh:135
static constexpr unsigned TGT_MAP_POPULATE
Definition linux.hh:126
static const int TGT_SIGINT
Definition linux.hh:58
static const unsigned GSI_CLK_TCK
clock freq in Hz
Definition linux.hh:139
static constexpr int TGT_O_SYNC
O_SYNC.
Definition linux.hh:111
static constexpr unsigned TGT_MAP_ANONYMOUS
Definition linux.hh:128
static const unsigned TGT_TIOCGETP
Definition linux.hh:153
static const unsigned GSI_CPU_INFO
CPU information.
Definition linux.hh:134
static constexpr unsigned TGT_MAP_HUGETLB
Definition linux.hh:122
static constexpr int TGT_O_CREAT
O_CREAT.
Definition linux.hh:97
Copyright (c) 2024 Arm Limited All rights reserved.
Definition binary32.hh:36

Generated on Mon Jan 13 2025 04:28:22 for gem5 by doxygen 1.9.8