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