github.com/q45/go@v0.0.0-20151101211701-a4fb8c13db3f/src/runtime/os_linux_386.go (about)

     1  // Copyright 2009 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  const (
    10  	_AT_NULL    = 0
    11  	_AT_RANDOM  = 25
    12  	_AT_SYSINFO = 32
    13  )
    14  
    15  var _vdso uint32
    16  
    17  func sysargs(argc int32, argv **byte) {
    18  	// skip over argv, envv to get to auxv
    19  	n := argc + 1
    20  	for argv_index(argv, n) != nil {
    21  		n++
    22  	}
    23  	n++
    24  	auxv := (*[1 << 28]uint32)(add(unsafe.Pointer(argv), uintptr(n)*ptrSize))
    25  
    26  	for i := 0; auxv[i] != _AT_NULL; i += 2 {
    27  		switch auxv[i] {
    28  		case _AT_SYSINFO:
    29  			_vdso = auxv[i+1]
    30  
    31  		case _AT_RANDOM:
    32  			startupRandomData = (*[16]byte)(unsafe.Pointer(uintptr(auxv[i+1])))[:]
    33  		}
    34  	}
    35  }