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