1/* example usage: stap /path/to/driver1.systemtap -x <pid> */
2/*
3 * %CopyrightBegin%
4 *
5 * Copyright Scott Lystig Fritchie and Andreas Schultz, 2011-2016. All Rights Reserved.
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 *     http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 *
19 * %CopyrightEnd%
20 */
21/*
22 * Note: This file assumes that you're using the SMP-enabled Erlang
23 *       virtual machine, "beam.smp".
24 *       Note that other variations of the virtual machine also have
25 *       different names, e.g. the debug build of the SMP-enabled VM
26 *       is "beam.debug.smp".
27 *
28 *       To use a different virtual machine, replace each instance of
29 *       "beam.smp" with "beam.debug.smp" or the VM name appropriate
30 *       to your environment.
31 */
32
33probe process("beam.smp").mark("driver__init")
34{
35    printf("driver init name %s major %d minor %d flags %d\n",
36	   user_string($arg1), $arg2, $arg3, $arg4);
37}
38
39probe process("beam.smp").mark("driver__start")
40{
41    printf("driver start pid %s driver name %s port %s\n",
42	   user_string($arg1), user_string($arg2), user_string($arg3));
43}
44
45probe process("beam.smp").mark("driver__stop")
46{
47    printf("driver stop pid %s driver name %s port %s\n",
48	   user_string($arg1), user_string($arg2), user_string($arg3));
49}
50
51probe process("beam.smp").mark("driver__finish")
52{
53    printf("driver finish driver name %s\n",
54           user_string($arg1));
55}
56
57probe process("beam.smp").mark("driver__flush")
58{
59    printf("driver flush pid %s port %s port name %s\n",
60	   user_string($arg1), user_string($arg2), user_string($arg3));
61}
62
63probe process("beam.smp").mark("driver__output")
64{
65    printf("driver output pid %s port %s port name %s bytes %d\n",
66	   user_string($arg1), user_string($arg2), user_string($arg3), $arg4);
67}
68
69probe process("beam.smp").mark("driver__outputv")
70{
71    printf("driver outputv pid %s port %s port name %s bytes %d\n",
72	   user_string($arg1), user_string($arg2), user_string($arg3), $arg4);
73}
74
75probe process("beam.smp").mark("driver__control")
76{
77    printf("driver control pid %s port %s port name %s command %d bytes %d\n",
78	   user_string($arg1), user_string($arg2), user_string($arg3), $arg4, $arg5);
79}
80
81probe process("beam.smp").mark("driver__call")
82{
83    printf("driver call pid %s port %s port name %s command %d bytes %d\n",
84	   user_string($arg1), user_string($arg2), user_string($arg3), $arg4, $arg5);
85}
86
87probe process("beam.smp").mark("driver__ready_input")
88{
89    printf("driver ready_input pid %s port %s port name %s\n",
90	   user_string($arg1), user_string($arg2), user_string($arg3));
91}
92
93probe process("beam.smp").mark("driver__ready_output")
94{
95    printf("driver ready_output pid %s port %s port name %s\n",
96	   user_string($arg1), user_string($arg2), user_string($arg3));
97}
98
99probe process("beam.smp").mark("driver__timeout")
100{
101    printf("driver timeout pid %s port %s port name %s\n",
102	   user_string($arg1), user_string($arg2), user_string($arg3));
103}
104
105probe process("beam.smp").mark("driver__ready_async")
106{
107    printf("driver ready_async pid %s port %s port name %s\n",
108	   user_string($arg1), user_string($arg2), user_string($arg3));
109}
110
111probe process("beam.smp").mark("driver__process_exit")
112{
113    printf("driver process_exit pid %s port %s port name %s\n",
114	   user_string($arg1), user_string($arg2), user_string($arg3));
115}
116
117probe process("beam.smp").mark("driver__stop_select")
118{
119    printf("driver stop_select driver name %s\n", user_string($arg1));
120}
121