github.com/rohankumardubey/syslog-redirector-golang@v0.0.0-20140320174030-4859f03d829a/src/pkg/runtime/syscall_windows.goc (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 syscall
     6  #include "runtime.h"
     7  #include "os_GOOS.h"
     8  #include "cgocall.h"
     9  
    10  func loadlibrary(filename *uint16) (handle uintptr, err uintptr) {
    11  	WinCall c;
    12  
    13  	c.fn = runtime·LoadLibrary;
    14  	c.n = 1;
    15  	c.args = &filename;
    16  	runtime·cgocall(runtime·asmstdcall, &c);
    17  	handle = c.r1;
    18  	if(handle == 0)
    19  		err = c.err;
    20  	else
    21  		err = 0;
    22  }
    23  
    24  func getprocaddress(handle uintptr, procname *uint8) (proc uintptr, err uintptr) {
    25  	WinCall c;
    26  
    27  	USED(procname);
    28  	c.fn = runtime·GetProcAddress;
    29  	c.n = 2;
    30  	c.args = &handle;
    31  	runtime·cgocall(runtime·asmstdcall, &c);
    32  	proc = c.r1;
    33  	if(proc == 0)
    34  		err = c.err;
    35  	else
    36  		err = 0;
    37  }
    38  
    39  func NewCallback(fn Eface) (code uintptr) {
    40  	code = (uintptr)runtime·compilecallback(fn, true);
    41  }
    42  
    43  /*
    44   * If this is needed, uncomment here and add a declaration in package syscall
    45   * next to the NewCallback declaration.
    46   *
    47  func NewCallbackCDecl(fn Eface) (code uintptr) {
    48  	code = (uintptr)runtime·compilecallback(fn, false);
    49  }
    50   */
    51  
    52  func Syscall(fn uintptr, nargs uintptr, a1 uintptr, a2 uintptr, a3 uintptr) (r1 uintptr, r2 uintptr, err uintptr) {
    53  	WinCall c;
    54  
    55  	USED(a2);
    56  	USED(a3);
    57  	c.fn = (void*)fn;
    58  	c.n = nargs;
    59  	c.args = &a1;
    60  	runtime·cgocall(runtime·asmstdcall, &c);
    61  	err = c.err;
    62  	r1 = c.r1;
    63  	r2 = c.r2;
    64  }
    65  
    66  func Syscall6(fn uintptr, nargs uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr, a6 uintptr) (r1 uintptr, r2 uintptr, err uintptr) {
    67  	WinCall c;
    68  
    69  	USED(a2);
    70  	USED(a3);
    71  	USED(a4);
    72  	USED(a5);
    73  	USED(a6);
    74  	c.fn = (void*)fn;
    75  	c.n = nargs;
    76  	c.args = &a1;
    77  	runtime·cgocall(runtime·asmstdcall, &c);
    78  	err = c.err;
    79  	r1 = c.r1;
    80  	r2 = c.r2;
    81  }
    82  
    83  func Syscall9(fn uintptr, nargs uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr, a6 uintptr, a7 uintptr, a8 uintptr, a9 uintptr) (r1 uintptr, r2 uintptr, err uintptr) {
    84  	WinCall c;
    85  
    86  	USED(a2);
    87  	USED(a3);
    88  	USED(a4);
    89  	USED(a5);
    90  	USED(a6);
    91  	USED(a7);
    92  	USED(a8);
    93  	USED(a9);
    94  	c.fn = (void*)fn;
    95  	c.n = nargs;
    96  	c.args = &a1;
    97  	runtime·cgocall(runtime·asmstdcall, &c);
    98  	err = c.err;
    99  	r1 = c.r1;
   100  	r2 = c.r2;
   101  }
   102  
   103  func Syscall12(fn uintptr, nargs uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr, a6 uintptr, a7 uintptr, a8 uintptr, a9 uintptr, a10 uintptr, a11 uintptr, a12 uintptr) (r1 uintptr, r2 uintptr, err uintptr) {
   104  	WinCall c;
   105  
   106  	USED(a2);
   107  	USED(a3);
   108  	USED(a4);
   109  	USED(a5);
   110  	USED(a6);
   111  	USED(a7);
   112  	USED(a8);
   113  	USED(a9);
   114  	USED(a10);
   115  	USED(a11);
   116  	USED(a12);
   117  	c.fn = (void*)fn;
   118  	c.n = nargs;
   119  	c.args = &a1;
   120  	runtime·cgocall(runtime·asmstdcall, &c);
   121  	err = c.err;
   122  	r1 = c.r1;
   123  	r2 = c.r2;
   124  }
   125  
   126  func Syscall15(fn uintptr, nargs uintptr, a1 uintptr, a2 uintptr, a3 uintptr, a4 uintptr, a5 uintptr, a6 uintptr, a7 uintptr, a8 uintptr, a9 uintptr, a10 uintptr, a11 uintptr, a12 uintptr, a13 uintptr, a14 uintptr, a15 uintptr) (r1 uintptr, r2 uintptr, err uintptr) {
   127  	WinCall c;
   128  
   129  	USED(a2);
   130  	USED(a3);
   131  	USED(a4);
   132  	USED(a5);
   133  	USED(a6);
   134  	USED(a7);
   135  	USED(a8);
   136  	USED(a9);
   137  	USED(a10);
   138  	USED(a11);
   139  	USED(a12);
   140  	USED(a13);
   141  	USED(a14);
   142  	USED(a15);
   143  	c.fn = (void*)fn;
   144  	c.n = nargs;
   145  	c.args = &a1;
   146  	runtime·cgocall(runtime·asmstdcall, &c);
   147  	err = c.err;
   148  	r1 = c.r1;
   149  	r2 = c.r2;
   150  }