4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
28 uint64_t ts
; /* timestamp of last syscall entry */
29 uint64_t elapsed
; /* total elapsed time in nanoseconds */
30 uint64_t calls
; /* number of calls made */
31 size_t maxbytes
; /* maximum byte count argument */
34 struct callinfo i
[string
]; /* declare i as an associative array */
36 syscall
::read
:entry
, syscall
::write
:entry
39 i
[probefunc
].ts
= timestamp
;
41 i
[probefunc
].maxbytes
= arg2
> i
[probefunc
].maxbytes ?
42 arg2
: i
[probefunc
].maxbytes
;
45 syscall
::read
:return, syscall
::write
:return
46 /i
[probefunc
].ts
!= 0 && pid
== $1/
48 i
[probefunc
].elapsed
+= timestamp
- i
[probefunc
].ts
;
53 printf(" calls max bytes elapsed nsecs\n");
54 printf("------ ----- --------- -------------\n");
55 printf(" read %5d %9d %d\n",
56 i
["read"].calls
, i
["read"].maxbytes
, i
["read"].elapsed
);
57 printf(" write %5d %9d %d\n",
58 i
["write"].calls
, i
["write"].maxbytes
, i
["write"].elapsed
);