]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gprofng/testsuite/gprofng.display/synprog/so_syn.c
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / gprofng / testsuite / gprofng.display / synprog / so_syn.c
1 /* Copyright (C) 2021-2024 Free Software Foundation, Inc.
2 Contributed by Oracle.
3
4 This file is part of GNU Binutils.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3, or (at your option)
9 any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, 51 Franklin Street - Fifth Floor, Boston,
19 MA 02110-1301, USA. */
20
21 #include <stdio.h>
22 #include <stdlib.h>
23 #include "stopwatch.h"
24
25 static void so_burncpu ();
26
27 int
28 so_cputime ()
29 {
30 wlog ("start of so_cputime", NULL);
31
32 /* put a memory leak in here */
33 (void) malloc (13);
34
35 fprintf (stderr, "so_burncpu @ %p\n", so_burncpu);
36 so_burncpu ();
37
38 wlog ("end of so_cputime", NULL);
39 return 13;
40 }
41
42 void so_init () __attribute__ ((constructor));
43
44 void
45 so_init ()
46 {
47 fprintf (stderr, "so_init executed\n");
48 }
49
50 /* so_burncpu - loop to use a bunch of user time */
51 void
52 so_burncpu ()
53 {
54 hrtime_t start = gethrtime ();
55 hrtime_t vstart = gethrvtime ();
56 volatile float x = 0.; /* temp variable for f.p. calculation */
57 long long count = 0;
58 do
59 {
60 x = 0.0;
61 for (int j = 0; j < 100000; j++)
62 x = x + 1.0;
63 count++;
64 }
65 while (start + testtime * 1e9 > gethrtime ());
66
67 fprintf (stderr, " Performed %lld while-loop iterations\n", count);
68 whrvlog (gethrtime () - start, gethrvtime () - vstart, "so_burncpu", NULL);
69 }