1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
'\" t
.\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu)
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Modified Fri Jun 23 01:35:19 1995 Andries Brouwer <aeb@cwi.nl>
.\" (prompted by Bas V. de Bakker <bas@phys.uva.nl>)
.\" Corrected (and moved to man3), 980612, aeb
.TH profil 3 2023-07-20 "Linux man-pages 6.05.01"
.SH NAME
profil \- execution time profile
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.nf
.B #include <unistd.h>
.PP
.BI "int profil(unsigned short *" buf ", size_t " bufsiz ,
.BI " size_t " offset ", unsigned int " scale );
.PP
.fi
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
.PP
.BR profil ():
.nf
Since glibc 2.21:
.\" commit 266865c0e7b79d4196e2cc393693463f03c90bd8
_DEFAULT_SOURCE
In glibc 2.19 and 2.20:
_DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
Up to and including glibc 2.19:
_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
.fi
.SH DESCRIPTION
This routine provides a means to find out in what areas your program
spends most of its time.
The argument
.I buf
points to
.I bufsiz
bytes of core.
Every virtual 10 milliseconds, the user's program counter (PC)
is examined:
.I offset
is subtracted and the result is multiplied by
.I scale
and divided by 65536.
If the resulting value is less than
.IR bufsiz ,
then the corresponding entry in
.I buf
is incremented.
If
.I buf
is NULL, profiling is disabled.
.SH RETURN VALUE
Zero is always returned.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lbx lb lb
l l l.
Interface Attribute Value
T{
.na
.nh
.BR profil ()
T} Thread safety MT-Unsafe
.TE
.sp 1
.SH STANDARDS
None.
.SH HISTORY
Similar to a call in SVr4.
.SH BUGS
.BR profil ()
cannot be used on a program that also uses
.B ITIMER_PROF
interval timers (see
.BR setitimer (2)).
.PP
True kernel profiling provides more accurate results.
.\" Libc 4.4 contained a kernel patch providing a system call profil.
.SH SEE ALSO
.BR gprof (1),
.BR sprof (1),
.BR setitimer (2),
.BR sigaction (2),
.BR signal (2)
|