#! /usr/bin/env stap
# Copyright (C) 2012 Red Hat, Inc.
# by William Cohen <wcohen@redhat.com>
#
# exercise the stopwatch tapset

probe begin
{
  start_stopwatch("wall");
  /* The next two lines assumes that target is running and in user-space. */
  start_stopwatch("user");
  stop_stopwatch("system")
}

probe syscall.*
{
  if (pid() != target()) next
  stop_stopwatch("user")
  start_stopwatch("system")
}

probe syscall.*.return
{
  if (pid() != target()) next
  start_stopwatch("user")
  stop_stopwatch("system")
}

probe end
{
  stop_stopwatch("wall")
  stop_stopwatch("user")
  stop_stopwatch("system")

  w = read_stopwatch_us("wall")
  u = read_stopwatch_us("user")
  s = read_stopwatch_us("system")
  printf ("wall clock                 %12dus\n", w);
  printf ("wall clock in user-space   %12dus\n", u);
  printf ("wall clock in kernel-space %12dus\n", s);

  delete_stopwatch("wall")
  delete_stopwatch("user")
  delete_stopwatch("system")
}
