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

     1  // Copyright 2021 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  // The C definitions for gprof.go. That file uses //export so
     6  // it can't put function definitions in the "C" import comment.
     7  
     8  #include <stdint.h>
     9  #include <stdlib.h>
    10  
    11  // Functions exported from Go.
    12  extern void GoSleep();
    13  
    14  struct cgoContextArg {
    15  	uintptr_t context;
    16  };
    17  
    18  void gprofCgoContext(void *arg) {
    19  	((struct cgoContextArg*)arg)->context = 1;
    20  }
    21  
    22  void gprofCgoTraceback(void *arg) {
    23  	// spend some time here so the P is more likely to be retaken.
    24  	volatile int i;
    25  	for (i = 0; i < 123456789; i++);
    26  }
    27  
    28  void CallGoSleep() {
    29  	GoSleep();
    30  }
    31  

View as plain text