// Copyright 2016 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. // Test that using the Go profiler in a C program does not crash. #include <stddef.h> #include <sys/time.h> #include "libgo6.h" int main(int argc, char **argv) { struct timeval tvstart, tvnow; int diff; gettimeofday(&tvstart, NULL); go_start_profile(); // Busy wait so we have something to profile. // If we just sleep the profiling signal will never fire. while (1) { gettimeofday(&tvnow, NULL); diff = (tvnow.tv_sec - tvstart.tv_sec) * 1000 * 1000 + (tvnow.tv_usec - tvstart.tv_usec); // Profile frequency is 100Hz so we should definitely // get a signal in 50 milliseconds. if (diff > 50 * 1000) break; } go_stop_profile(); return 0; }