Source file src/runtime/defs_linux_arm.go

     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  }
   208  

View as plain text