123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- // Copyright 2011 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- #include <string.h>
- #include <sys/types.h>
- #include <unistd.h>
- #include "_cgo_export.h"
- void
- callback(void *f)
- {
- // use some stack space
- volatile char data[64*1024];
- data[0] = 0;
- goCallback(f);
- data[sizeof(data)-1] = 0;
- }
- void
- callGoFoo(void)
- {
- extern void goFoo(void);
- goFoo();
- }
- void
- IntoC(void)
- {
- BackIntoGo();
- }
- #ifdef WIN32
- #include <windows.h>
- long long
- mysleep(int seconds) {
- long long st = GetTickCount();
- Sleep(1000 * seconds);
- return st;
- }
- #else
- #include <sys/time.h>
- long long
- mysleep(int seconds) {
- long long st;
- struct timeval tv;
- gettimeofday(&tv, NULL);
- st = tv.tv_sec * 1000 + tv.tv_usec / 1000;
- sleep(seconds);
- return st;
- }
- #endif
- long long
- twoSleep(int n)
- {
- BackgroundSleep(n);
- return mysleep(n);
- }
- void
- callGoStackCheck(void)
- {
- extern void goStackCheck(void);
- goStackCheck();
- }
- int
- returnAfterGrow(void)
- {
- extern int goReturnVal(void);
- goReturnVal();
- return 123456;
- }
- int
- returnAfterGrowFromGo(void)
- {
- extern int goReturnVal(void);
- return goReturnVal();
- }
- void
- callGoWithString(void)
- {
- extern void goWithString(GoString);
- const char *str = "string passed from C to Go";
- goWithString((GoString){str, strlen(str)});
- }
|