gem5  v20.1.0.0
Classes | Public Types | Static Public Member Functions | Static Public Attributes | List of all members
Linux Class Reference

This class encapsulates the types, structures, constants, functions, and syscall-number mappings specific to the Alpha Linux syscall interface. More...

#include <linux.hh>

Inheritance diagram for Linux:
OperatingSystem ArmLinux MipsLinux PowerLinux RiscvLinux SparcLinux X86Linux ArmLinux32 ArmLinux64 RiscvLinux32 RiscvLinux64 Sparc32Linux X86Linux32 X86Linux64

Classes

struct  fd_set
 
struct  rlimit
 Limit struct for getrlimit/setrlimit. More...
 
struct  rusage
 
struct  tgt_iovec
 
struct  tgt_stat
 Stat buffer. More...
 
struct  tgt_stat64
 
struct  timespec
 For clock_gettime(). More...
 
struct  timeval
 For gettimeofday(). More...
 
struct  tms
 For times(). More...
 
struct  utsname
 Interface struct for uname(). More...
 

Public Types

typedef uint64_t size_t
 Basic Linux types. More...
 
typedef uint64_t off_t
 
typedef int64_t time_t
 
typedef int64_t clock_t
 
typedef uint32_t uid_t
 
typedef uint32_t gid_t
 
using PrintkVarArgs = GuestABI::VarArgs< Addr, int32_t, uint32_t, int64_t, uint64_t >
 
- Public Types inherited from OperatingSystem
typedef void tgt_stat
 Stat buffer. More...
 
typedef void tgt_stat64
 

Static Public Member Functions

static bool isTtyReq (unsigned req)
 Return true for the ioctl codes for which we return ENOTTY without printing a warning, since we know that ENOTTY is the correct thing to return (and not just a sign that we don't recognize the ioctl code. More...
 
static int openSpecialFile (std::string path, Process *process, ThreadContext *tc)
 
static std::string procMeminfo (Process *process, ThreadContext *tc)
 
static std::string etcPasswd (Process *process, ThreadContext *tc)
 
static std::string procSelfMaps (Process *process, ThreadContext *tc)
 
static std::string cpuOnline (Process *process, ThreadContext *tc)
 
static std::string devRandom (Process *process, ThreadContext *tc)
 
- Static Public Member Functions inherited from OperatingSystem
static int openSpecialFile (std::string path, Process *process, ThreadContext *tc)
 

Static Public Attributes

static const int _SYS_NMLN = 65
 Length of strings in struct utsname (plus 1 for null char). More...
 
static const int M5_SC_CLK_TCK = 100
 Clock ticks per second, for times(). More...
 
static const unsigned TGT_TCGETS = 0x5401
 ioctl() command codes. More...
 
static const unsigned TGT_TCGETA = 0x5405
 
static const unsigned TGT_TCSETAW = 0x5407
 
static const unsigned TGT_FIONREAD = 0x541B
 
static const unsigned TGT_RLIMIT_CPU = 0
 Resource constants for getrlimit(). More...
 
static const unsigned TGT_RLIMIT_FSIZE = 1
 
static const unsigned TGT_RLIMIT_DATA = 2
 
static const unsigned TGT_RLIMIT_STACK = 3
 
static const unsigned TGT_RLIMIT_CORE = 4
 
static const unsigned TGT_RLIMIT_RSS = 5
 
static const unsigned TGT_RLIMIT_NPROC = 6
 
static const unsigned TGT_RLIMIT_NOFILE = 7
 
static const unsigned TGT_RLIMIT_MEMLOCK = 8
 
static const unsigned TGT_RLIMIT_AS = 9
 
static const unsigned TGT_RLIMIT_LOCKS = 10
 
static const unsigned TGT_RLIMIT_SIGPENDING = 11
 
static const unsigned TGT_RLIMIT_MSGQUEUE = 12
 
static const unsigned TGT_RLIMIT_NICE = 13
 
static const unsigned TGT_RLIMIT_RTPRIO = 14
 
static const unsigned TGT_RLIMIT_RTTIME = 15
 
static const unsigned TGT_RLIM_NLIMITS = 16
 
static const int TGT_RUSAGE_SELF = 0
 For getrusage(). More...
 
static const int TGT_RUSAGE_CHILDREN = -1
 
static const int TGT_RUSAGE_BOTH = -2
 
static Random random
 
static const unsigned TGT_FUTEX_WAIT = 0
 
static const unsigned TGT_FUTEX_WAKE = 1
 
static const unsigned TGT_FUTEX_REQUEUE = 3
 
static const unsigned TGT_FUTEX_CMP_REQUEUE = 4
 
static const unsigned TGT_FUTEX_WAKE_OP = 5
 
static const unsigned TGT_FUTEX_WAIT_BITSET = 9
 
static const unsigned TGT_FUTEX_WAKE_BITSET = 10
 
static const unsigned TGT_EAGAIN = 11
 
static const unsigned TGT_EWOULDBLOCK = TGT_EAGAIN
 
static const unsigned TGT_FUTEX_PRIVATE_FLAG = 128
 
static const unsigned TGT_FUTEX_CLOCK_REALTIME_FLAG = 256
 
static const unsigned TGT_FUTEX_OP_SET = 0
 
static const unsigned TGT_FUTEX_OP_ADD = 1
 
static const unsigned TGT_FUTEX_OP_OR = 2
 
static const unsigned TGT_FUTEX_OP_ANDN = 3
 
static const unsigned TGT_FUTEX_OP_XOR = 4
 
static const unsigned TGT_FUTEX_OP_ARG_SHIFT = 8
 
static const unsigned TGT_FUTEX_OP_CMP_EQ = 0
 
static const unsigned TGT_FUTEX_OP_CMP_NE = 1
 
static const unsigned TGT_FUTEX_OP_CMP_LT = 2
 
static const unsigned TGT_FUTEX_OP_CMP_LE = 3
 
static const unsigned TGT_FUTEX_OP_CMP_GT = 4
 
static const unsigned TGT_FUTEX_OP_CMP_GE = 5
 
static const int TGT_AT_FDCWD = -100
 
static const unsigned TGT_MREMAP_MAYMOVE = 0x1
 
static const unsigned TGT_MREMAP_FIXED = 0x2
 
static const unsigned TGT_CLONE_VM = 0x00000100
 
static const unsigned TGT_CLONE_FS = 0x00000200
 
static const unsigned TGT_CLONE_FILES = 0x00000400
 
static const unsigned TGT_CLONE_SIGHAND = 0x00000800
 
static const unsigned TGT_CLONE_PTRACE = 0x00002000
 
static const unsigned TGT_CLONE_VFORK = 0x00004000
 
static const unsigned TGT_CLONE_PARENT = 0x00008000
 
static const unsigned TGT_CLONE_THREAD = 0x00010000
 
static const unsigned TGT_CLONE_NEWNS = 0x00020000
 
static const unsigned TGT_CLONE_SYSVSEM = 0x00040000
 
static const unsigned TGT_CLONE_SETTLS = 0x00080000
 
static const unsigned TGT_CLONE_PARENT_SETTID = 0x00100000
 
static const unsigned TGT_CLONE_CHILD_CLEARTID = 0x00200000
 
static const unsigned TGT_CLONE_DETACHED = 0x00400000
 
static const unsigned TGT_CLONE_UNTRACED = 0x00800000
 
static const unsigned TGT_CLONE_CHILD_SETTID = 0x01000000
 
static const unsigned TGT_CLONE_NEWUTS = 0x04000000
 
static const unsigned TGT_CLONE_NEWIPC = 0x08000000
 
static const unsigned TGT_CLONE_NEWUSER = 0x10000000
 
static const unsigned TGT_CLONE_NEWPID = 0x20000000
 
static const unsigned TGT_CLONE_NEWNET = 0x40000000
 
static const unsigned TGT_CLONE_IO = 0x80000000
 
static const unsigned TGT_WNOHANG = 0x00000001
 
static const unsigned TGT_WUNTRACED = 0x00000002
 
static const unsigned TGT_WSTOPPED = TGT_WUNTRACED
 
static const unsigned TGT_WEXITED = 0x00000004
 
static const unsigned TGT_WCONTINUED = 0x00000008
 
static const unsigned TGT_WNOWAIT = 0x01000000
 
- Static Public Attributes inherited from OperatingSystem
static const int _SYS_NMLN = 65
 Length of strings in struct utsname (plus 1 for null char). More...
 

Detailed Description

This class encapsulates the types, structures, constants, functions, and syscall-number mappings specific to the Alpha Linux syscall interface.

Definition at line 46 of file linux.hh.

Member Typedef Documentation

◆ clock_t

typedef int64_t Linux::clock_t

Definition at line 56 of file linux.hh.

◆ gid_t

typedef uint32_t Linux::gid_t

Definition at line 58 of file linux.hh.

◆ off_t

typedef uint64_t Linux::off_t

Definition at line 54 of file linux.hh.

◆ PrintkVarArgs

using Linux::PrintkVarArgs = GuestABI::VarArgs<Addr, int32_t, uint32_t, int64_t, uint64_t>

Definition at line 41 of file printk.hh.

◆ size_t

typedef uint64_t Linux::size_t

Basic Linux types.

Definition at line 53 of file linux.hh.

◆ time_t

typedef int64_t Linux::time_t

Definition at line 55 of file linux.hh.

◆ uid_t

typedef uint32_t Linux::uid_t

Definition at line 57 of file linux.hh.

Member Function Documentation

◆ cpuOnline()

std::string Linux::cpuOnline ( Process process,
ThreadContext tc 
)
static

Definition at line 111 of file linux.cc.

References csprintf(), ThreadContext::getSystemPtr(), System::Threads::size(), and System::threads.

Referenced by openSpecialFile().

◆ devRandom()

std::string Linux::devRandom ( Process process,
ThreadContext tc 
)
static

Definition at line 117 of file linux.cc.

References curTick(), DPRINTFR, ThreadContext::getCpuPtr(), ArmISA::i, Random::random(), and random.

Referenced by openSpecialFile().

◆ etcPasswd()

std::string Linux::etcPasswd ( Process process,
ThreadContext tc 
)
static

Definition at line 98 of file linux.cc.

References csprintf(), and Process::tgtCwd.

Referenced by openSpecialFile().

◆ isTtyReq()

static bool Linux::isTtyReq ( unsigned  req)
inlinestatic

Return true for the ioctl codes for which we return ENOTTY without printing a warning, since we know that ENOTTY is the correct thing to return (and not just a sign that we don't recognize the ioctl code.

Definition at line 176 of file linux.hh.

References TGT_FIONREAD, TGT_TCGETA, TGT_TCGETS, and TGT_TCSETAW.

◆ openSpecialFile()

int Linux::openSpecialFile ( std::string  path,
Process process,
ThreadContext tc 
)
static

◆ procMeminfo()

std::string Linux::procMeminfo ( Process process,
ThreadContext tc 
)
static

Definition at line 90 of file linux.cc.

References csprintf(), System::freeMemSize(), System::memSize(), and Process::system.

Referenced by openSpecialFile().

◆ procSelfMaps()

std::string Linux::procSelfMaps ( Process process,
ThreadContext tc 
)
static

Definition at line 105 of file linux.cc.

References Process::memState.

Referenced by openSpecialFile().

Member Data Documentation

◆ _SYS_NMLN

const int Linux::_SYS_NMLN = 65
static

Length of strings in struct utsname (plus 1 for null char).

Definition at line 108 of file linux.hh.

◆ M5_SC_CLK_TCK

const int Linux::M5_SC_CLK_TCK = 100
static

Clock ticks per second, for times().

Definition at line 138 of file linux.hh.

◆ random

Random Linux::random
static

Definition at line 234 of file linux.hh.

Referenced by devRandom().

◆ TGT_AT_FDCWD

const int Linux::TGT_AT_FDCWD = -100
static

Definition at line 273 of file linux.hh.

◆ TGT_CLONE_CHILD_CLEARTID

const unsigned Linux::TGT_CLONE_CHILD_CLEARTID = 0x00200000
static

Definition at line 291 of file linux.hh.

◆ TGT_CLONE_CHILD_SETTID

const unsigned Linux::TGT_CLONE_CHILD_SETTID = 0x01000000
static

Definition at line 294 of file linux.hh.

◆ TGT_CLONE_DETACHED

const unsigned Linux::TGT_CLONE_DETACHED = 0x00400000
static

Definition at line 292 of file linux.hh.

◆ TGT_CLONE_FILES

const unsigned Linux::TGT_CLONE_FILES = 0x00000400
static

Definition at line 281 of file linux.hh.

◆ TGT_CLONE_FS

const unsigned Linux::TGT_CLONE_FS = 0x00000200
static

Definition at line 280 of file linux.hh.

◆ TGT_CLONE_IO

const unsigned Linux::TGT_CLONE_IO = 0x80000000
static

Definition at line 300 of file linux.hh.

◆ TGT_CLONE_NEWIPC

const unsigned Linux::TGT_CLONE_NEWIPC = 0x08000000
static

Definition at line 296 of file linux.hh.

◆ TGT_CLONE_NEWNET

const unsigned Linux::TGT_CLONE_NEWNET = 0x40000000
static

Definition at line 299 of file linux.hh.

◆ TGT_CLONE_NEWNS

const unsigned Linux::TGT_CLONE_NEWNS = 0x00020000
static

Definition at line 287 of file linux.hh.

◆ TGT_CLONE_NEWPID

const unsigned Linux::TGT_CLONE_NEWPID = 0x20000000
static

Definition at line 298 of file linux.hh.

◆ TGT_CLONE_NEWUSER

const unsigned Linux::TGT_CLONE_NEWUSER = 0x10000000
static

Definition at line 297 of file linux.hh.

◆ TGT_CLONE_NEWUTS

const unsigned Linux::TGT_CLONE_NEWUTS = 0x04000000
static

Definition at line 295 of file linux.hh.

◆ TGT_CLONE_PARENT

const unsigned Linux::TGT_CLONE_PARENT = 0x00008000
static

Definition at line 285 of file linux.hh.

◆ TGT_CLONE_PARENT_SETTID

const unsigned Linux::TGT_CLONE_PARENT_SETTID = 0x00100000
static

Definition at line 290 of file linux.hh.

◆ TGT_CLONE_PTRACE

const unsigned Linux::TGT_CLONE_PTRACE = 0x00002000
static

Definition at line 283 of file linux.hh.

◆ TGT_CLONE_SETTLS

const unsigned Linux::TGT_CLONE_SETTLS = 0x00080000
static

Definition at line 289 of file linux.hh.

Referenced by X86Linux::archClone(), ArmLinux::archClone(), and RiscvLinux64::archClone().

◆ TGT_CLONE_SIGHAND

const unsigned Linux::TGT_CLONE_SIGHAND = 0x00000800
static

Definition at line 282 of file linux.hh.

◆ TGT_CLONE_SYSVSEM

const unsigned Linux::TGT_CLONE_SYSVSEM = 0x00040000
static

Definition at line 288 of file linux.hh.

◆ TGT_CLONE_THREAD

const unsigned Linux::TGT_CLONE_THREAD = 0x00010000
static

Definition at line 286 of file linux.hh.

◆ TGT_CLONE_UNTRACED

const unsigned Linux::TGT_CLONE_UNTRACED = 0x00800000
static

Definition at line 293 of file linux.hh.

◆ TGT_CLONE_VFORK

const unsigned Linux::TGT_CLONE_VFORK = 0x00004000
static

Definition at line 284 of file linux.hh.

◆ TGT_CLONE_VM

const unsigned Linux::TGT_CLONE_VM = 0x00000100
static

Definition at line 279 of file linux.hh.

◆ TGT_EAGAIN

const unsigned Linux::TGT_EAGAIN = 11
static

Definition at line 252 of file linux.hh.

◆ TGT_EWOULDBLOCK

const unsigned Linux::TGT_EWOULDBLOCK = TGT_EAGAIN
static

Definition at line 253 of file linux.hh.

◆ TGT_FIONREAD

const unsigned Linux::TGT_FIONREAD = 0x541B
static

Definition at line 168 of file linux.hh.

Referenced by isTtyReq().

◆ TGT_FUTEX_CLOCK_REALTIME_FLAG

const unsigned Linux::TGT_FUTEX_CLOCK_REALTIME_FLAG = 256
static

Definition at line 255 of file linux.hh.

◆ TGT_FUTEX_CMP_REQUEUE

const unsigned Linux::TGT_FUTEX_CMP_REQUEUE = 4
static

Definition at line 248 of file linux.hh.

◆ TGT_FUTEX_OP_ADD

const unsigned Linux::TGT_FUTEX_OP_ADD = 1
static

Definition at line 258 of file linux.hh.

◆ TGT_FUTEX_OP_ANDN

const unsigned Linux::TGT_FUTEX_OP_ANDN = 3
static

Definition at line 260 of file linux.hh.

◆ TGT_FUTEX_OP_ARG_SHIFT

const unsigned Linux::TGT_FUTEX_OP_ARG_SHIFT = 8
static

Definition at line 263 of file linux.hh.

◆ TGT_FUTEX_OP_CMP_EQ

const unsigned Linux::TGT_FUTEX_OP_CMP_EQ = 0
static

Definition at line 265 of file linux.hh.

◆ TGT_FUTEX_OP_CMP_GE

const unsigned Linux::TGT_FUTEX_OP_CMP_GE = 5
static

Definition at line 270 of file linux.hh.

◆ TGT_FUTEX_OP_CMP_GT

const unsigned Linux::TGT_FUTEX_OP_CMP_GT = 4
static

Definition at line 269 of file linux.hh.

◆ TGT_FUTEX_OP_CMP_LE

const unsigned Linux::TGT_FUTEX_OP_CMP_LE = 3
static

Definition at line 268 of file linux.hh.

◆ TGT_FUTEX_OP_CMP_LT

const unsigned Linux::TGT_FUTEX_OP_CMP_LT = 2
static

Definition at line 267 of file linux.hh.

◆ TGT_FUTEX_OP_CMP_NE

const unsigned Linux::TGT_FUTEX_OP_CMP_NE = 1
static

Definition at line 266 of file linux.hh.

◆ TGT_FUTEX_OP_OR

const unsigned Linux::TGT_FUTEX_OP_OR = 2
static

Definition at line 259 of file linux.hh.

◆ TGT_FUTEX_OP_SET

const unsigned Linux::TGT_FUTEX_OP_SET = 0
static

Definition at line 257 of file linux.hh.

◆ TGT_FUTEX_OP_XOR

const unsigned Linux::TGT_FUTEX_OP_XOR = 4
static

Definition at line 261 of file linux.hh.

◆ TGT_FUTEX_PRIVATE_FLAG

const unsigned Linux::TGT_FUTEX_PRIVATE_FLAG = 128
static

Definition at line 254 of file linux.hh.

◆ TGT_FUTEX_REQUEUE

const unsigned Linux::TGT_FUTEX_REQUEUE = 3
static

Definition at line 247 of file linux.hh.

◆ TGT_FUTEX_WAIT

const unsigned Linux::TGT_FUTEX_WAIT = 0
static

Definition at line 245 of file linux.hh.

◆ TGT_FUTEX_WAIT_BITSET

const unsigned Linux::TGT_FUTEX_WAIT_BITSET = 9
static

Definition at line 250 of file linux.hh.

◆ TGT_FUTEX_WAKE

const unsigned Linux::TGT_FUTEX_WAKE = 1
static

Definition at line 246 of file linux.hh.

◆ TGT_FUTEX_WAKE_BITSET

const unsigned Linux::TGT_FUTEX_WAKE_BITSET = 10
static

Definition at line 251 of file linux.hh.

◆ TGT_FUTEX_WAKE_OP

const unsigned Linux::TGT_FUTEX_WAKE_OP = 5
static

Definition at line 249 of file linux.hh.

◆ TGT_MREMAP_FIXED

const unsigned Linux::TGT_MREMAP_FIXED = 0x2
static

Definition at line 277 of file linux.hh.

◆ TGT_MREMAP_MAYMOVE

const unsigned Linux::TGT_MREMAP_MAYMOVE = 0x1
static

Definition at line 276 of file linux.hh.

◆ TGT_RLIM_NLIMITS

const unsigned Linux::TGT_RLIM_NLIMITS = 16
static

Definition at line 207 of file linux.hh.

◆ TGT_RLIMIT_AS

const unsigned Linux::TGT_RLIMIT_AS = 9
static

Definition at line 200 of file linux.hh.

◆ TGT_RLIMIT_CORE

const unsigned Linux::TGT_RLIMIT_CORE = 4
static

Definition at line 195 of file linux.hh.

◆ TGT_RLIMIT_CPU

const unsigned Linux::TGT_RLIMIT_CPU = 0
static

Resource constants for getrlimit().

Definition at line 191 of file linux.hh.

◆ TGT_RLIMIT_DATA

const unsigned Linux::TGT_RLIMIT_DATA = 2
static

Definition at line 193 of file linux.hh.

◆ TGT_RLIMIT_FSIZE

const unsigned Linux::TGT_RLIMIT_FSIZE = 1
static

Definition at line 192 of file linux.hh.

◆ TGT_RLIMIT_LOCKS

const unsigned Linux::TGT_RLIMIT_LOCKS = 10
static

Definition at line 201 of file linux.hh.

◆ TGT_RLIMIT_MEMLOCK

const unsigned Linux::TGT_RLIMIT_MEMLOCK = 8
static

Definition at line 199 of file linux.hh.

◆ TGT_RLIMIT_MSGQUEUE

const unsigned Linux::TGT_RLIMIT_MSGQUEUE = 12
static

Definition at line 203 of file linux.hh.

◆ TGT_RLIMIT_NICE

const unsigned Linux::TGT_RLIMIT_NICE = 13
static

Definition at line 204 of file linux.hh.

◆ TGT_RLIMIT_NOFILE

const unsigned Linux::TGT_RLIMIT_NOFILE = 7
static

Definition at line 198 of file linux.hh.

◆ TGT_RLIMIT_NPROC

const unsigned Linux::TGT_RLIMIT_NPROC = 6
static

Definition at line 197 of file linux.hh.

◆ TGT_RLIMIT_RSS

const unsigned Linux::TGT_RLIMIT_RSS = 5
static

Definition at line 196 of file linux.hh.

◆ TGT_RLIMIT_RTPRIO

const unsigned Linux::TGT_RLIMIT_RTPRIO = 14
static

Definition at line 205 of file linux.hh.

◆ TGT_RLIMIT_RTTIME

const unsigned Linux::TGT_RLIMIT_RTTIME = 15
static

Definition at line 206 of file linux.hh.

◆ TGT_RLIMIT_SIGPENDING

const unsigned Linux::TGT_RLIMIT_SIGPENDING = 11
static

Definition at line 202 of file linux.hh.

◆ TGT_RLIMIT_STACK

const unsigned Linux::TGT_RLIMIT_STACK = 3
static

Definition at line 194 of file linux.hh.

◆ TGT_RUSAGE_BOTH

const int Linux::TGT_RUSAGE_BOTH = -2
static

Definition at line 212 of file linux.hh.

◆ TGT_RUSAGE_CHILDREN

const int Linux::TGT_RUSAGE_CHILDREN = -1
static

Definition at line 211 of file linux.hh.

◆ TGT_RUSAGE_SELF

const int Linux::TGT_RUSAGE_SELF = 0
static

For getrusage().

Definition at line 210 of file linux.hh.

◆ TGT_TCGETA

const unsigned Linux::TGT_TCGETA = 0x5405
static

Definition at line 166 of file linux.hh.

Referenced by isTtyReq().

◆ TGT_TCGETS

const unsigned Linux::TGT_TCGETS = 0x5401
static

ioctl() command codes.

Definition at line 165 of file linux.hh.

Referenced by isTtyReq().

◆ TGT_TCSETAW

const unsigned Linux::TGT_TCSETAW = 0x5407
static

Definition at line 167 of file linux.hh.

Referenced by isTtyReq().

◆ TGT_WCONTINUED

const unsigned Linux::TGT_WCONTINUED = 0x00000008
static

Definition at line 307 of file linux.hh.

◆ TGT_WEXITED

const unsigned Linux::TGT_WEXITED = 0x00000004
static

Definition at line 306 of file linux.hh.

◆ TGT_WNOHANG

const unsigned Linux::TGT_WNOHANG = 0x00000001
static

Definition at line 303 of file linux.hh.

◆ TGT_WNOWAIT

const unsigned Linux::TGT_WNOWAIT = 0x01000000
static

Definition at line 308 of file linux.hh.

◆ TGT_WSTOPPED

const unsigned Linux::TGT_WSTOPPED = TGT_WUNTRACED
static

Definition at line 305 of file linux.hh.

◆ TGT_WUNTRACED

const unsigned Linux::TGT_WUNTRACED = 0x00000002
static

Definition at line 304 of file linux.hh.


The documentation for this class was generated from the following files:

Generated on Wed Sep 30 2020 14:02:26 for gem5 by doxygen 1.8.17