/
/
opt
/
golang
/
1.22.0
/
src
/
runtime
/
testdata
/
testprogcgo
Server: in-mum-web1112.main-hosting.eu (62.72.28.111)
You: 216.73.216.40
PHP 8.3.16
Dir:
/opt/golang/1.22.0/src/runtime/testdata/testprogcgo
Edit:
/opt/golang/1.22.0/src/runtime/testdata/testprogcgo/issue29707.go
// 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. //go:build !plan9 && !windows // +build !plan9,!windows // This is for issue #29707 package main /* #include <pthread.h> extern void* callbackTraceParser(void*); typedef void* (*cbTraceParser)(void*); static void testCallbackTraceParser(cbTraceParser cb) { pthread_t thread_id; pthread_create(&thread_id, NULL, cb, NULL); pthread_join(thread_id, NULL); } */ import "C" import ( "bytes" "fmt" traceparser "internal/trace" "runtime/trace" "time" "unsafe" ) func init() { register("CgoTraceParser", CgoTraceParser) } //export callbackTraceParser func callbackTraceParser(unsafe.Pointer) unsafe.Pointer { time.Sleep(time.Millisecond) return nil } func CgoTraceParser() { buf := new(bytes.Buffer) trace.Start(buf) C.testCallbackTraceParser(C.cbTraceParser(C.callbackTraceParser)) trace.Stop() _, err := traceparser.Parse(buf, "") if err == traceparser.ErrTimeOrder { fmt.Println("ErrTimeOrder") } else if err != nil { fmt.Println("Parse error: ", err) } else { fmt.Println("OK") } }
Ukuran: 1.1 KB