#! /usr/bin/env stap
#
# This script continuously lists the top 20 systemcalls in the interval 
# 5 seconds
#

global syscalls_count

probe syscall_any {
  syscalls_count[name] <<< 1
}

function print_systop () {
  printf ("%25s %10s\n", "SYSCALL", "COUNT")
  foreach (syscall in syscalls_count- limit 20) {
    printf("%25s %10d\n", syscall, @count(syscalls_count[syscall]))
  }
  delete syscalls_count
}

probe timer.s(5) {
  print_systop ()
  printf("--------------------------------------------------------------\n")
}

global prom_arr

probe prometheus {
  foreach (syscall in syscalls_count- limit 20)
    prom_arr[syscall] = @count(syscalls_count[syscall])

  @prometheus_dump_array1(prom_arr, "top_syscall_count", "name")
  delete prom_arr
}
