Home | History | Annotate | Download | only in test
      1 // Copyright 2011 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 #include <sys/types.h>
      6 #include <unistd.h>
      7 #include "_cgo_export.h"
      8 
      9 void
     10 callback(void *f)
     11 {
     12 	// use some stack space
     13 	volatile char data[64*1024];
     14 
     15 	data[0] = 0;
     16 	goCallback(f);
     17         data[sizeof(data)-1] = 0;
     18 }
     19 
     20 void
     21 callGoFoo(void)
     22 {
     23 	extern void goFoo(void);
     24 	goFoo();
     25 }
     26 
     27 void
     28 IntoC(void)
     29 {
     30 	BackIntoGo();
     31 }
     32 
     33 #ifdef WIN32
     34 #include <windows.h>
     35 long long
     36 mysleep(int seconds) {
     37 	long long st = GetTickCount();
     38 	sleep(seconds);
     39 	return st;
     40 }
     41 #else
     42 #include <sys/time.h>
     43 long long
     44 mysleep(int seconds) {
     45 	long long st;
     46 	struct timeval tv;
     47 	gettimeofday(&tv, NULL);
     48 	st = tv.tv_sec * 1000 + tv.tv_usec / 1000;
     49 	sleep(seconds);
     50 	return st;
     51 }
     52 #endif
     53 
     54 long long
     55 twoSleep(int n)
     56 {
     57 	BackgroundSleep(n);
     58 	return mysleep(n);
     59 }
     60 
     61 void
     62 callGoStackCheck(void)
     63 {
     64 	extern void goStackCheck(void);
     65 	goStackCheck();
     66 }
     67 
     68 int
     69 returnAfterGrow(void)
     70 {
     71 	extern int goReturnVal(void);
     72 	goReturnVal();
     73 	return 123456;
     74 }
     75 
     76 int
     77 returnAfterGrowFromGo(void)
     78 {
     79 	extern int goReturnVal(void);
     80 	return goReturnVal();
     81 }
     82 
     83