From 4b7cf8bdfe7e1246a746125e613ff6178b3bf94b Mon Sep 17 00:00:00 2001 From: mats cronqvist Date: Thu, 17 May 2007 12:38:21 +0000 Subject: [PATCH] changed the file structure to the traditional src/ebin/priv etc. fixed a bug in sherk_ets:f2t git-svn-id: https://eper.googlecode.com/svn/trunk@76 5f96f306-4121-0410-aeb0-fb9935354dc2 --- ChangeLog | 5 +++ Makefile.am | 2 +- bin/Makefile.am | 4 +++ {dtop => bin}/dtop | 0 {gperf => bin}/gperf | 0 {ntop => bin}/ntop | 0 {redbug => bin}/redbug | 0 {sherk => bin}/sherk | 0 configure.ac | 10 ++---- {redbug => doc}/redbug.txt | 0 dtop/Makefile.am | 17 --------- gperf/Makefile.am | 20 ----------- sherk/sherk_tab.erl | 47 ------------------------- src/Makefile.am | 32 +++++++++++++++++ {dtop => src}/dtop.erl | 0 {dtop => src}/dtopConsumer.erl | 0 {gperf => src}/gperf.erl | 0 {gperf => src}/gperf.glade | 0 {gperf => src}/gperf.gladep | 0 {gperf => src}/gperfConsumer.erl | 0 {gperf => src}/gperfGtk.erl | 0 {ntop => src}/ntop.erl | 0 {ntop => src}/ntopConsumer.erl | 0 {prf => src}/prf.erl | 0 {prf => src}/prfClient.erl | 0 {prf => src}/prfHost.erl | 0 {prf => src}/prfNet.erl | 0 {prf => src}/prfPrc.erl | 0 {prf => src}/prfSys.erl | 0 {prf => src}/prfTarg.erl | 0 {prf => src}/prfTrc.erl | 0 {redbug => src}/redbug.erl | 2 -- {redbug => src}/redbugConsumer.erl | 0 {sherk => src}/sherk.erl | 0 {sherk => src}/sherk.glade | 0 {sherk => src}/sherk.gladep | 0 {sherk => src}/sherk_aquire.erl | 0 {sherk => src}/sherk_ets.erl | 36 ++++++++++++------- {sherk => src}/sherk_list.erl | 0 {sherk => src}/sherk_prof.erl | 0 {sherk => src}/sherk_scan.erl | 0 src/sherk_tab.erl | 55 ++++++++++++++++++++++++++++++ {sherk => src}/sherk_target.erl | 0 {sherk => src}/sherk_tree.erl | 0 44 files changed, 124 insertions(+), 106 deletions(-) create mode 100644 bin/Makefile.am rename {dtop => bin}/dtop (100%) rename {gperf => bin}/gperf (100%) rename {ntop => bin}/ntop (100%) rename {redbug => bin}/redbug (100%) rename {sherk => bin}/sherk (100%) rename {redbug => doc}/redbug.txt (100%) delete mode 100644 dtop/Makefile.am delete mode 100644 gperf/Makefile.am delete mode 100644 sherk/sherk_tab.erl create mode 100644 src/Makefile.am rename {dtop => src}/dtop.erl (100%) rename {dtop => src}/dtopConsumer.erl (100%) rename {gperf => src}/gperf.erl (100%) rename {gperf => src}/gperf.glade (100%) rename {gperf => src}/gperf.gladep (100%) rename {gperf => src}/gperfConsumer.erl (100%) rename {gperf => src}/gperfGtk.erl (100%) rename {ntop => src}/ntop.erl (100%) rename {ntop => src}/ntopConsumer.erl (100%) rename {prf => src}/prf.erl (100%) rename {prf => src}/prfClient.erl (100%) rename {prf => src}/prfHost.erl (100%) rename {prf => src}/prfNet.erl (100%) rename {prf => src}/prfPrc.erl (100%) rename {prf => src}/prfSys.erl (100%) rename {prf => src}/prfTarg.erl (100%) rename {prf => src}/prfTrc.erl (100%) rename {redbug => src}/redbug.erl (99%) rename {redbug => src}/redbugConsumer.erl (100%) rename {sherk => src}/sherk.erl (100%) rename {sherk => src}/sherk.glade (100%) rename {sherk => src}/sherk.gladep (100%) rename {sherk => src}/sherk_aquire.erl (100%) rename {sherk => src}/sherk_ets.erl (81%) rename {sherk => src}/sherk_list.erl (100%) rename {sherk => src}/sherk_prof.erl (100%) rename {sherk => src}/sherk_scan.erl (100%) create mode 100644 src/sherk_tab.erl rename {sherk => src}/sherk_target.erl (100%) rename {sherk => src}/sherk_tree.erl (100%) diff --git a/ChangeLog b/ChangeLog index 7fdb78a..f3bf52c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-05-17 Mats Cronqvist + + * src/sherk_ets.erl: + f2t/1 (file2tab) was broken... + 2007-05-10 Mats Cronqvist * redbug/redbug.erl: diff --git a/Makefile.am b/Makefile.am index 4a4624e..fbc2b77 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = dtop gperf ntop prf redbug sherk +SUBDIRS = src bin clean-local: -find . -name "*~" -exec rm {} \; diff --git a/bin/Makefile.am b/bin/Makefile.am new file mode 100644 index 0000000..0ed2071 --- /dev/null +++ b/bin/Makefile.am @@ -0,0 +1,4 @@ +bindir = $(ERLANG_INSTALL_LIB_DIR_eper)/priv/bin +dist_bin_SCRIPTS = dtop gperf gperf ntop redbug sherk + +EXTRA_DIST = $(dist_bin_SCRIPTS) diff --git a/dtop/dtop b/bin/dtop similarity index 100% rename from dtop/dtop rename to bin/dtop diff --git a/gperf/gperf b/bin/gperf similarity index 100% rename from gperf/gperf rename to bin/gperf diff --git a/ntop/ntop b/bin/ntop similarity index 100% rename from ntop/ntop rename to bin/ntop diff --git a/redbug/redbug b/bin/redbug similarity index 100% rename from redbug/redbug rename to bin/redbug diff --git a/sherk/sherk b/bin/sherk similarity index 100% rename from sherk/sherk rename to bin/sherk diff --git a/configure.ac b/configure.ac index 7a79695..8d1eb59 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT(Various Erlang performance related tools, 0.34, +AC_INIT(Various Erlang performance related tools, 0.35, mats.cronqvist@ericsson.com, eper) dnl Require autoconf version >=2.59c. first one with erlang macros AC_PREREQ(2.59c) @@ -36,12 +36,8 @@ AC_SUBST([GTKDOCLINKS], [$_gtkdoclinks]) dnl Specify the files to instantiate. AC_CONFIG_FILES([ \ Makefile \ - dtop/Makefile \ - gperf/Makefile \ - ntop/Makefile \ - prf/Makefile \ - redbug/Makefile \ - sherk/Makefile \ + src/Makefile \ + bin/Makefile \ ]) AC_OUTPUT diff --git a/redbug/redbug.txt b/doc/redbug.txt similarity index 100% rename from redbug/redbug.txt rename to doc/redbug.txt diff --git a/dtop/Makefile.am b/dtop/Makefile.am deleted file mode 100644 index 04c3cab..0000000 --- a/dtop/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -erlsrcdir = $(ERLANG_INSTALL_LIB_DIR_eper)/src -erlsrc_DATA = dtop.erl dtopConsumer.erl - -bindir = $(ERLANG_INSTALL_LIB_DIR_eper)/priv/bin -dist_bin_SCRIPTS = dtop - -erlbeamdir = $(ERLANG_INSTALL_LIB_DIR_eper)/ebin -erlbeam_DATA = $(patsubst %.erl, %.beam, $(erlsrc_DATA)) - -EXTRA_DIST = $(erlsrc_DATA) $(dist_bin_SCRIPTS) -CLEANFILES = $(erlbeam_DATA) - -all: $(erlbeam_DATA) - -SUFFIXES = .erl .beam -.erl.beam: - $(ERLC) $(ERLCFLAGS) -b beam $< diff --git a/gperf/Makefile.am b/gperf/Makefile.am deleted file mode 100644 index 8dffcbc..0000000 --- a/gperf/Makefile.am +++ /dev/null @@ -1,20 +0,0 @@ -erlsrcdir = $(ERLANG_INSTALL_LIB_DIR_eper)/src -erlsrc_DATA = gperf.erl gperfConsumer.erl gperfGtk.erl - -bindir = $(ERLANG_INSTALL_LIB_DIR_eper)/priv/bin -dist_bin_SCRIPTS = gperf - -gladedir = $(ERLANG_INSTALL_LIB_DIR_eper)/priv/glade -glade_DATA = gperf.gladep gperf.glade - -erlbeamdir = $(ERLANG_INSTALL_LIB_DIR_eper)/ebin -erlbeam_DATA = $(patsubst %.erl, %.beam, $(erlsrc_DATA)) - -EXTRA_DIST = $(erlsrc_DATA) $(glade_DATA) -CLEANFILES = $(erlbeam_DATA) - -all: $(erlbeam_DATA) - -SUFFIXES = .erl .beam -.erl.beam: - $(ERLC) $(ERLCFLAGS) -b beam $< diff --git a/sherk/sherk_tab.erl b/sherk/sherk_tab.erl deleted file mode 100644 index 543ee85..0000000 --- a/sherk/sherk_tab.erl +++ /dev/null @@ -1,47 +0,0 @@ -%%%------------------------------------------------------------------- -%%% File : sherk_tab.erl -%%% Author : Mats Cronqvist -%%% Description : -%%% -%%% Created : 21 Aug 2006 by Mats Cronqvist -%%%------------------------------------------------------------------- --module(sherk_tab). - --export([assert/1,check_file/1]). - --import(filename,[dirname/1,join/1,basename/2]). - --include_lib("kernel/include/file.hrl"). - --define(LOG(T), sherk:log(process_info(self()),T)). - -assert(File) -> - TabFile = dirname(File)++"/."++basename(File,".trz")++".etz", - {ok,#file_info{mtime=MT}} = file:read_file_info(File), - case file:read_file_info(TabFile) of - {ok,#file_info{mtime=TabMT}} when MT < TabMT -> - %% the tab file exists and is up-to-date - case sherk_ets:lup(sherk_prof, file) of - File -> ?LOG({is_cached,TabFile}); - _ -> ?LOG(restoring_tab),sherk_ets:f2t(TabFile) - end; - _ -> - %% make tab and save it - ?LOG([creating_tab]), - sherk_scan:go(File,'',sherk_prof,0,''), - ets:insert(sherk_prof, {file, File}), - try - ?LOG(storing_tab), - sherk_ets:t2f([sherk_prof,sherk_scan],TabFile) - catch - _:_ -> ?LOG({creation_failed,TabFile}) - end - end, - ?LOG([folding_pids]), - ets:foldl(fun store_pid/2, [], sherk_prof), - ?LOG([done]). - -store_pid({{{pid,time},P},_},_) -> ets:insert(sherk_prof,{sherk:to_str(P),P}); -store_pid(_,_) -> ok. - -check_file(File) -> ".trz" = filename:extension(File). diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..2f41d70 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,32 @@ +erlsrcdir = $(ERLANG_INSTALL_LIB_DIR_eper)/src + +erlsrc_DATA = ntop.erl ntopConsumer.erl \ + dtop.erl dtopConsumer.erl \ + gperf.erl gperfConsumer.erl gperfGtk.erl \ + gperf.erl gperfConsumer.erl gperfGtk.erl \ + prfNet.erl prfSys.erl prfPrc.erl prfTrc.erl \ + prf.erl prfHost.erl prfTarg.erl prfClient.erl \ + prfNet.erl prfSys.erl prfPrc.erl prfTrc.erl \ + prf.erl prfHost.erl prfTarg.erl prfClient.erl \ + prfNet.erl prfSys.erl prfPrc.erl prfTrc.erl \ + prf.erl prfHost.erl prfTarg.erl prfClient.erl \ + redbug.erl redbugConsumer.erl \ + sherk.erl sherk_tab.erl sherk_prof.erl \ + sherk_tree.erl sherk_list.erl sherk_scan.erl sherk_aquire.erl \ + sherk_target.erl sherk_ets.erl + +gladedir = $(ERLANG_INSTALL_LIB_DIR_eper)/priv/glade +glade_DATA = gperf.gladep gperf.glade \ + sherk.gladep sherk.glade + +erlbeamdir = $(ERLANG_INSTALL_LIB_DIR_eper)/ebin +erlbeam_DATA = $(patsubst %.erl, %.beam, $(erlsrc_DATA)) + +EXTRA_DIST = $(erlsrc_DATA) +CLEANFILES = $(erlbeam_DATA) + +all: $(erlbeam_DATA) + +%.beam: %.erl + echo $(PWD) + $(ERLC) $(ERLCFLAGS) $< diff --git a/dtop/dtop.erl b/src/dtop.erl similarity index 100% rename from dtop/dtop.erl rename to src/dtop.erl diff --git a/dtop/dtopConsumer.erl b/src/dtopConsumer.erl similarity index 100% rename from dtop/dtopConsumer.erl rename to src/dtopConsumer.erl diff --git a/gperf/gperf.erl b/src/gperf.erl similarity index 100% rename from gperf/gperf.erl rename to src/gperf.erl diff --git a/gperf/gperf.glade b/src/gperf.glade similarity index 100% rename from gperf/gperf.glade rename to src/gperf.glade diff --git a/gperf/gperf.gladep b/src/gperf.gladep similarity index 100% rename from gperf/gperf.gladep rename to src/gperf.gladep diff --git a/gperf/gperfConsumer.erl b/src/gperfConsumer.erl similarity index 100% rename from gperf/gperfConsumer.erl rename to src/gperfConsumer.erl diff --git a/gperf/gperfGtk.erl b/src/gperfGtk.erl similarity index 100% rename from gperf/gperfGtk.erl rename to src/gperfGtk.erl diff --git a/ntop/ntop.erl b/src/ntop.erl similarity index 100% rename from ntop/ntop.erl rename to src/ntop.erl diff --git a/ntop/ntopConsumer.erl b/src/ntopConsumer.erl similarity index 100% rename from ntop/ntopConsumer.erl rename to src/ntopConsumer.erl diff --git a/prf/prf.erl b/src/prf.erl similarity index 100% rename from prf/prf.erl rename to src/prf.erl diff --git a/prf/prfClient.erl b/src/prfClient.erl similarity index 100% rename from prf/prfClient.erl rename to src/prfClient.erl diff --git a/prf/prfHost.erl b/src/prfHost.erl similarity index 100% rename from prf/prfHost.erl rename to src/prfHost.erl diff --git a/prf/prfNet.erl b/src/prfNet.erl similarity index 100% rename from prf/prfNet.erl rename to src/prfNet.erl diff --git a/prf/prfPrc.erl b/src/prfPrc.erl similarity index 100% rename from prf/prfPrc.erl rename to src/prfPrc.erl diff --git a/prf/prfSys.erl b/src/prfSys.erl similarity index 100% rename from prf/prfSys.erl rename to src/prfSys.erl diff --git a/prf/prfTarg.erl b/src/prfTarg.erl similarity index 100% rename from prf/prfTarg.erl rename to src/prfTarg.erl diff --git a/prf/prfTrc.erl b/src/prfTrc.erl similarity index 100% rename from prf/prfTrc.erl rename to src/prfTrc.erl diff --git a/redbug/redbug.erl b/src/redbug.erl similarity index 99% rename from redbug/redbug.erl rename to src/redbug.erl index 1370801..a50b318 100644 --- a/redbug/redbug.erl +++ b/src/redbug.erl @@ -61,8 +61,6 @@ start(X) -> io:fwrite("bad args: ~p~n",[X]), erlang:halt(1). -start(Time,Msgs,Trc) -> start(Time,Msgs,Trc,all). - start(Time,Msgs,Trc) -> go(Time,Msgs,Trc,#cnf{}). start(Time,Msgs,Trc,Proc) -> go(Time,Msgs,Trc,#cnf{proc=Proc}). diff --git a/redbug/redbugConsumer.erl b/src/redbugConsumer.erl similarity index 100% rename from redbug/redbugConsumer.erl rename to src/redbugConsumer.erl diff --git a/sherk/sherk.erl b/src/sherk.erl similarity index 100% rename from sherk/sherk.erl rename to src/sherk.erl diff --git a/sherk/sherk.glade b/src/sherk.glade similarity index 100% rename from sherk/sherk.glade rename to src/sherk.glade diff --git a/sherk/sherk.gladep b/src/sherk.gladep similarity index 100% rename from sherk/sherk.gladep rename to src/sherk.gladep diff --git a/sherk/sherk_aquire.erl b/src/sherk_aquire.erl similarity index 100% rename from sherk/sherk_aquire.erl rename to src/sherk_aquire.erl diff --git a/sherk/sherk_ets.erl b/src/sherk_ets.erl similarity index 81% rename from sherk/sherk_ets.erl rename to src/sherk_ets.erl index 3bff1a3..bc82733 100644 --- a/sherk/sherk_ets.erl +++ b/src/sherk_ets.erl @@ -59,21 +59,26 @@ lup(Tab, Key) -> %% tab2file/2 and file2tab/1 replacements %% stores multiple tabs in compressed files +%% file format is; +%% <>,<>, +%% [<>,<>,...] +%% <<0:32/integer>> + t2f(Tabs, File) when is_list(Tabs) -> case file:open(File,[write,compressed,raw,binary]) of {error,R} -> exit({error_opening,R,File}); {ok,FD} -> try t2f(Tabs,FD,0) - after file:close(FD) - end + after file:close(FD) + end end. t2f([],_FD,N) -> N; t2f([Tab|Tabs],FD,N) -> - file:write(FD,<<0:32/integer>>), t2f_f(make_info(Tab),FD), ets:foldl(fun t2f_f/2,FD,Tab), + file:write(FD,<<0:32/integer>>), t2f(Tabs,FD,N+1). make_info(Tab) -> @@ -95,7 +100,7 @@ f2t(File) -> {error,R} -> exit({error_opening,R,File}); {ok,FD} -> - try f2t_f(FD), do_tabs(f2t_f(FD),FD,[]) + try do_tabs(get_tab_header(FD),FD,[]) after file:close(FD) end end. @@ -105,26 +110,33 @@ do_tabs(eof,_FD,O) -> do_tabs({Name,Opts},FD,O) -> new(Name,Opts), Cnt = f2t(FD,Name,0), - do_tabs(f2t_f(FD),FD,[{Name,Cnt}|O]). + do_tabs(get_tab_header(FD),FD,[{Name,Cnt}|O]). + +get_tab_header(FD) -> + try f2t_f(FD) + catch + throw:eof -> eof; + _:X -> exit({bad_header,X}) + end. + f2t(FD,Tab,N) -> try ets:insert(Tab,f2t_f(FD)), f2t(FD,Tab,N+1) catch - throw:eof -> N; - throw:bot -> N + throw:delimiter -> N; + throw:eof -> exit({unexpected_eof}) end. f2t_f(FD) -> case file:read(FD,4) of - {ok,<<0:32/integer>>} -> throw(bot); + eof -> throw(eof); + {ok,<<0:32/integer>>} -> throw(delimiter); {ok,<>} -> case file:read(FD,Size) of {ok,Bin} -> binary_to_term(Bin); - {error,R} -> exit({error_reading,R}); - eof -> exit({unexpected_eof}) + R -> exit({error_reading_term,R}) end; - eof -> throw(eof); - {error,R} -> exit({error_reading,R}) + R -> exit({error_reading_size,R}) end. diff --git a/sherk/sherk_list.erl b/src/sherk_list.erl similarity index 100% rename from sherk/sherk_list.erl rename to src/sherk_list.erl diff --git a/sherk/sherk_prof.erl b/src/sherk_prof.erl similarity index 100% rename from sherk/sherk_prof.erl rename to src/sherk_prof.erl diff --git a/sherk/sherk_scan.erl b/src/sherk_scan.erl similarity index 100% rename from sherk/sherk_scan.erl rename to src/sherk_scan.erl diff --git a/src/sherk_tab.erl b/src/sherk_tab.erl new file mode 100644 index 0000000..4b90f21 --- /dev/null +++ b/src/sherk_tab.erl @@ -0,0 +1,55 @@ +%%%------------------------------------------------------------------- +%%% File : sherk_tab.erl +%%% Author : Mats Cronqvist +%%% Description : +%%% +%%% Created : 21 Aug 2006 by Mats Cronqvist +%%%------------------------------------------------------------------- +-module(sherk_tab). + +-export([assert/1,check_file/1]). + +-import(filename,[dirname/1,join/1,basename/2]). + +-include_lib("kernel/include/file.hrl"). + +-define(LOG(T), sherk:log(process_info(self()),T)). + +assert(File) -> + TabFile = dirname(File)++"/."++basename(File,".trz")++".etz", + {ok,#file_info{mtime=MT}} = file:read_file_info(File), + case file:read_file_info(TabFile) of + {ok,#file_info{mtime=TabMT}} when MT < TabMT -> + %% the tab file exists and is up-to-date + case sherk_ets:lup(sherk_prof, file) of + File -> ?LOG({is_cached,TabFile}); + _ -> + ?LOG(restoring_tab), + try sherk_ets:f2t(TabFile) + catch + _:X -> + ?LOG({deleting_bad_tab_file,X}), + file:delete(TabFile), + assert(File) + end + end; + _ -> + %% make tab and save it + ?LOG([creating_tab]), + sherk_scan:go(File,'',sherk_prof,0,''), + ets:insert(sherk_prof, {file, File}), + try + ?LOG(storing_tab), + sherk_ets:t2f([sherk_prof,sherk_scan],TabFile) + catch + _:_ -> ?LOG({creation_failed,TabFile}) + end + end, + ?LOG([folding_pids]), + ets:foldl(fun store_pid/2, [], sherk_prof), + ?LOG([done]). + +store_pid({{{pid,time},P},_},_) -> ets:insert(sherk_prof,{sherk:to_str(P),P}); +store_pid(_,_) -> ok. + +check_file(File) -> ".trz" = filename:extension(File). diff --git a/sherk/sherk_target.erl b/src/sherk_target.erl similarity index 100% rename from sherk/sherk_target.erl rename to src/sherk_target.erl diff --git a/sherk/sherk_tree.erl b/src/sherk_tree.erl similarity index 100% rename from sherk/sherk_tree.erl rename to src/sherk_tree.erl