Home | History | Annotate | Download | only in runtime
      1 // created by cgo -cdefs and then converted to Go
      2 // cgo -cdefs defs_windows.go
      3 
      4 package runtime
      5 
      6 const (
      7 	_PROT_NONE  = 0
      8 	_PROT_READ  = 1
      9 	_PROT_WRITE = 2
     10 	_PROT_EXEC  = 4
     11 
     12 	_MAP_ANON    = 1
     13 	_MAP_PRIVATE = 2
     14 
     15 	_DUPLICATE_SAME_ACCESS   = 0x2
     16 	_THREAD_PRIORITY_HIGHEST = 0x2
     17 
     18 	_SIGINT           = 0x2
     19 	_CTRL_C_EVENT     = 0x0
     20 	_CTRL_BREAK_EVENT = 0x1
     21 
     22 	_CONTEXT_CONTROL = 0x10001
     23 	_CONTEXT_FULL    = 0x10007
     24 
     25 	_EXCEPTION_ACCESS_VIOLATION     = 0xc0000005
     26 	_EXCEPTION_BREAKPOINT           = 0x80000003
     27 	_EXCEPTION_FLT_DENORMAL_OPERAND = 0xc000008d
     28 	_EXCEPTION_FLT_DIVIDE_BY_ZERO   = 0xc000008e
     29 	_EXCEPTION_FLT_INEXACT_RESULT   = 0xc000008f
     30 	_EXCEPTION_FLT_OVERFLOW         = 0xc0000091
     31 	_EXCEPTION_FLT_UNDERFLOW        = 0xc0000093
     32 	_EXCEPTION_INT_DIVIDE_BY_ZERO   = 0xc0000094
     33 	_EXCEPTION_INT_OVERFLOW         = 0xc0000095
     34 
     35 	_INFINITE     = 0xffffffff
     36 	_WAIT_TIMEOUT = 0x102
     37 
     38 	_EXCEPTION_CONTINUE_EXECUTION = -0x1
     39 	_EXCEPTION_CONTINUE_SEARCH    = 0x0
     40 )
     41 
     42 type systeminfo struct {
     43 	anon0                       [4]byte
     44 	dwpagesize                  uint32
     45 	lpminimumapplicationaddress *byte
     46 	lpmaximumapplicationaddress *byte
     47 	dwactiveprocessormask       uint32
     48 	dwnumberofprocessors        uint32
     49 	dwprocessortype             uint32
     50 	dwallocationgranularity     uint32
     51 	wprocessorlevel             uint16
     52 	wprocessorrevision          uint16
     53 }
     54 
     55 type exceptionrecord struct {
     56 	exceptioncode        uint32
     57 	exceptionflags       uint32
     58 	exceptionrecord      *exceptionrecord
     59 	exceptionaddress     *byte
     60 	numberparameters     uint32
     61 	exceptioninformation [15]uint32
     62 }
     63 
     64 type floatingsavearea struct {
     65 	controlword   uint32
     66 	statusword    uint32
     67 	tagword       uint32
     68 	erroroffset   uint32
     69 	errorselector uint32
     70 	dataoffset    uint32
     71 	dataselector  uint32
     72 	registerarea  [80]uint8
     73 	cr0npxstate   uint32
     74 }
     75 
     76 type context struct {
     77 	contextflags      uint32
     78 	dr0               uint32
     79 	dr1               uint32
     80 	dr2               uint32
     81 	dr3               uint32
     82 	dr6               uint32
     83 	dr7               uint32
     84 	floatsave         floatingsavearea
     85 	seggs             uint32
     86 	segfs             uint32
     87 	seges             uint32
     88 	segds             uint32
     89 	edi               uint32
     90 	esi               uint32
     91 	ebx               uint32
     92 	edx               uint32
     93 	ecx               uint32
     94 	eax               uint32
     95 	ebp               uint32
     96 	eip               uint32
     97 	segcs             uint32
     98 	eflags            uint32
     99 	esp               uint32
    100 	segss             uint32
    101 	extendedregisters [512]uint8
    102 }
    103 
    104 func (c *context) ip() uintptr { return uintptr(c.eip) }
    105 func (c *context) sp() uintptr { return uintptr(c.esp) }
    106 
    107 func (c *context) setip(x uintptr) { c.eip = uint32(x) }
    108 func (c *context) setsp(x uintptr) { c.esp = uint32(x) }
    109 
    110 func dumpregs(r *context) {
    111 	print("eax     ", hex(r.eax), "\n")
    112 	print("ebx     ", hex(r.ebx), "\n")
    113 	print("ecx     ", hex(r.ecx), "\n")
    114 	print("edx     ", hex(r.edx), "\n")
    115 	print("edi     ", hex(r.edi), "\n")
    116 	print("esi     ", hex(r.esi), "\n")
    117 	print("ebp     ", hex(r.ebp), "\n")
    118 	print("esp     ", hex(r.esp), "\n")
    119 	print("eip     ", hex(r.eip), "\n")
    120 	print("eflags  ", hex(r.eflags), "\n")
    121 	print("cs      ", hex(r.segcs), "\n")
    122 	print("fs      ", hex(r.segfs), "\n")
    123 	print("gs      ", hex(r.seggs), "\n")
    124 }
    125 
    126 type overlapped struct {
    127 	internal     uint32
    128 	internalhigh uint32
    129 	anon0        [8]byte
    130 	hevent       *byte
    131 }
    132