Text file src/runtime/testdata/testprogcgo/trace_unix.c

     1  // Copyright 2023 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  //go:build unix
     6  
     7  // The unix C definitions for trace.go. That file uses //export so
     8  // it can't put function definitions in the "C" import comment.
     9  
    10  #include <pthread.h>
    11  #include <assert.h>
    12  
    13  extern void goCalledFromC(void);
    14  extern void goCalledFromCThread(void);
    15  
    16  static void* cCalledFromCThread(void *p) {
    17  	goCalledFromCThread();
    18  	return NULL;
    19  }
    20  
    21  void cCalledFromGo(void) {
    22  	goCalledFromC();
    23  
    24  	pthread_t thread;
    25  	assert(pthread_create(&thread, NULL, cCalledFromCThread, NULL) == 0);
    26  	assert(pthread_join(thread, NULL) == 0);
    27  }
    28  

View as plain text