github.com/ice-blockchain/go/src@v0.0.0-20240403114104-1564d284e521/runtime/defs_linux_arm.go (about) 1 // Copyright 2014 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package runtime 6 7 import "unsafe" 8 9 // Constants 10 const ( 11 _EINTR = 0x4 12 _ENOMEM = 0xc 13 _EAGAIN = 0xb 14 15 _PROT_NONE = 0 16 _PROT_READ = 0x1 17 _PROT_WRITE = 0x2 18 _PROT_EXEC = 0x4 19 20 _MAP_ANON = 0x20 21 _MAP_PRIVATE = 0x2 22 _MAP_FIXED = 0x10 23 24 _MADV_DONTNEED = 0x4 25 _MADV_FREE = 0x8 26 _MADV_HUGEPAGE = 0xe 27 _MADV_NOHUGEPAGE = 0xf 28 _MADV_COLLAPSE = 0x19 29 30 _SA_RESTART = 0x10000000 31 _SA_ONSTACK = 0x8000000 32 _SA_RESTORER = 0 // unused on ARM 33 _SA_SIGINFO = 0x4 34 _SI_KERNEL = 0x80 35 _SI_TIMER = -0x2 36 _SIGHUP = 0x1 37 _SIGINT = 0x2 38 _SIGQUIT = 0x3 39 _SIGILL = 0x4 40 _SIGTRAP = 0x5 41 _SIGABRT = 0x6 42 _SIGBUS = 0x7 43 _SIGFPE = 0x8 44 _SIGKILL = 0x9 45 _SIGUSR1 = 0xa 46 _SIGSEGV = 0xb 47 _SIGUSR2 = 0xc 48 _SIGPIPE = 0xd 49 _SIGALRM = 0xe 50 _SIGSTKFLT = 0x10 51 _SIGCHLD = 0x11 52 _SIGCONT = 0x12 53 _SIGSTOP = 0x13 54 _SIGTSTP = 0x14 55 _SIGTTIN = 0x15 56 _SIGTTOU = 0x16 57 _SIGURG = 0x17 58 _SIGXCPU = 0x18 59 _SIGXFSZ = 0x19 60 _SIGVTALRM = 0x1a 61 _SIGPROF = 0x1b 62 _SIGWINCH = 0x1c 63 _SIGIO = 0x1d 64 _SIGPWR = 0x1e 65 _SIGSYS = 0x1f 66 _SIGRTMIN = 0x20 67 _FPE_INTDIV = 0x1 68 _FPE_INTOVF = 0x2 69 _FPE_FLTDIV = 0x3 70 _FPE_FLTOVF = 0x4 71 _FPE_FLTUND = 0x5 72 _FPE_FLTRES = 0x6 73 _FPE_FLTINV = 0x7 74 _FPE_FLTSUB = 0x8 75 _BUS_ADRALN = 0x1 76 _BUS_ADRERR = 0x2 77 _BUS_OBJERR = 0x3 78 _SEGV_MAPERR = 0x1 79 _SEGV_ACCERR = 0x2 80 _ITIMER_REAL = 0 81 _ITIMER_PROF = 0x2 82 _ITIMER_VIRTUAL = 0x1 83 _O_RDONLY = 0 84 _O_WRONLY = 0x1 85 _O_CREAT = 0x40 86 _O_TRUNC = 0x200 87 _O_NONBLOCK = 0x800 88 _O_CLOEXEC = 0x80000 89 90 _CLOCK_THREAD_CPUTIME_ID = 0x3 91 92 _SIGEV_THREAD_ID = 0x4 93 94 _AF_UNIX = 0x1 95 _SOCK_DGRAM = 0x2 96 ) 97 98 type timespec struct { 99 tv_sec int32 100 tv_nsec int32 101 } 102 103 //go:nosplit 104 func (ts *timespec) setNsec(ns int64) { 105 ts.tv_sec = timediv(ns, 1e9, &ts.tv_nsec) 106 } 107 108 type stackt struct { 109 ss_sp *byte 110 ss_flags int32 111 ss_size uintptr 112 } 113 114 type sigcontext struct { 115 trap_no uint32 116 error_code uint32 117 oldmask uint32 118 r0 uint32 119 r1 uint32 120 r2 uint32 121 r3 uint32 122 r4 uint32 123 r5 uint32 124 r6 uint32 125 r7 uint32 126 r8 uint32 127 r9 uint32 128 r10 uint32 129 fp uint32 130 ip uint32 131 sp uint32 132 lr uint32 133 pc uint32 134 cpsr uint32 135 fault_address uint32 136 } 137 138 type ucontext struct { 139 uc_flags uint32 140 uc_link *ucontext 141 uc_stack stackt 142 uc_mcontext sigcontext 143 uc_sigmask uint32 144 __unused [31]int32 145 uc_regspace [128]uint32 146 } 147 148 type timeval struct { 149 tv_sec int32 150 tv_usec int32 151 } 152 153 func (tv *timeval) set_usec(x int32) { 154 tv.tv_usec = x 155 } 156 157 type itimerspec struct { 158 it_interval timespec 159 it_value timespec 160 } 161 162 type itimerval struct { 163 it_interval timeval 164 it_value timeval 165 } 166 167 type sigeventFields struct { 168 value uintptr 169 signo int32 170 notify int32 171 // below here is a union; sigev_notify_thread_id is the only field we use 172 sigev_notify_thread_id int32 173 } 174 175 type sigevent struct { 176 sigeventFields 177 178 // Pad struct to the max size in the kernel. 179 _ [_sigev_max_size - unsafe.Sizeof(sigeventFields{})]byte 180 } 181 182 type siginfoFields struct { 183 si_signo int32 184 si_errno int32 185 si_code int32 186 // below here is a union; si_addr is the only field we use 187 si_addr uint32 188 } 189 190 type siginfo struct { 191 siginfoFields 192 193 // Pad struct to the max size in the kernel. 194 _ [_si_max_size - unsafe.Sizeof(siginfoFields{})]byte 195 } 196 197 type sigactiont struct { 198 sa_handler uintptr 199 sa_flags uint32 200 sa_restorer uintptr 201 sa_mask uint64 202 } 203 204 type sockaddr_un struct { 205 family uint16 206 path [108]byte 207 }