/* * Copyright (c) 2012, Chris Andrews. All rights reserved. */ /* * Stub functions containing DTrace tracepoints for probes and * is-enabled probes. These functions are copied for each probe * dynamically created. * */ .text .align 4, 0x90 .globl usdt_tracepoint_isenabled .globl _usdt_tracepoint_isenabled .globl usdt_tracepoint_probe .globl _usdt_tracepoint_probe .globl usdt_tracepoint_end .globl _usdt_tracepoint_end .globl usdt_probe_args .globl _usdt_probe_args usdt_tracepoint_isenabled: _usdt_tracepoint_isenabled: pushl %ebp movl %esp, %ebp subl $8, %esp xorl %eax, %eax nop nop leave ret usdt_tracepoint_probe: _usdt_tracepoint_probe: nop nop nop nop nop addl $0x20,%esp leave usdt_tracepoint_end: _usdt_tracepoint_end: ret /* * Probe argument marshalling, i386 style * */ usdt_probe_args: _usdt_probe_args: pushl %ebp movl %esp,%ebp subl $8,%esp subl $8,%esp movl 8(%ebp),%edx movl 0xc(%ebp),%ecx test %ecx,%ecx je fire args: movl %ecx,%eax sal $2,%eax subl $4,%eax addl 0x10(%ebp),%eax pushl (%eax) dec %ecx jne args fire: jmp *%edx