12345678910111213141516171819202122232425262728293031323334 |
- // 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;
- }
|