From 7add577ea68819fb7f64e16187d2543c1cf5518b Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Tue, 23 Feb 2016 21:54:42 -0500 Subject: libeshprof: New profiling library --- (limited to 'libeshprof') diff --git a/libeshprof/hooks.esh b/libeshprof/hooks.esh new file mode 100644 index 0000000..a17ec77 --- /dev/null +++ b/libeshprof/hooks.esh @@ -0,0 +1,41 @@ +# Eggshell profiling library +# +# Copyright (C) 2016 Patrick "P. J." McDermott +# +# This file is part of the Eggshell Linker. +# +# The Eggshell Linker is free software: you can redistribute it +# and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# The Eggshell Linker is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied warranty +# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the Eggshell Linker If not, see +# . + +__prof_stack_sz=0 + +__prof_fn_begin() +{ + if [ ${__prof_stack_sz} -eq 0 ]; then + exec 9>eshmon.out + fi + printf '%s %s %s\n' "$(date '+%s.%N')" 'B' "${1}" >&9 + __prof_stack_sz=$((${__prof_stack_sz} + 1)) +} +__fn_begin_hook __prof_fn_begin + +__prof_fn_end() +{ + printf '%s %s %s\n' "$(date '+%s.%N')" 'E' "${1}" >&9 + __prof_stack_sz=$((${__prof_stack_sz} - 1)) + if [ ${__prof_stack_sz} -eq 0 ]; then + exec 9>&- + fi +} +__fn_end_hook __prof_fn_end -- cgit v0.9.1