/
/
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/trace.go
// Copyright 2023 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. package main /* // Defined in trace_*.c. void cCalledFromGo(void); */ import "C" import ( "context" "fmt" "log" "os" "runtime/trace" ) func init() { register("Trace", Trace) } // Trace is used by TestTraceUnwindCGO. func Trace() { file, err := os.CreateTemp("", "testprogcgo_trace") if err != nil { log.Fatalf("failed to create temp file: %s", err) } defer file.Close() if err := trace.Start(file); err != nil { log.Fatal(err) } defer trace.Stop() goCalledFromGo() <-goCalledFromCThreadChan fmt.Printf("trace path:%s", file.Name()) } // goCalledFromGo calls cCalledFromGo which calls back into goCalledFromC and // goCalledFromCThread. func goCalledFromGo() { C.cCalledFromGo() } //export goCalledFromC func goCalledFromC() { trace.Log(context.Background(), "goCalledFromC", "") } var goCalledFromCThreadChan = make(chan struct{}) //export goCalledFromCThread func goCalledFromCThread() { trace.Log(context.Background(), "goCalledFromCThread", "") close(goCalledFromCThreadChan) }
Ukuran: 1.1 KB