From 0d1ad607311857dc0b4666ce8a84c1a59c615ab9 Mon Sep 17 00:00:00 2001 From: Wenji Huang Date: Wed, 3 Feb 2010 10:21:24 +0800 Subject: PR9931: generate log to help diagnosing occasional cache hash collisions Ideas from Frank Ch. Eigler: - extending the hash.add() function to pass names along with the hash-mix values, so that class hash can internally track the hash-report string - storing the reports themselves in the cache, beside the .ko / .c files, and changing the cache-size-limit logic to delete these .txt files upon garbage collection * hash.h : New member parm_stream. * hash.cxx (get_parms): New function to convert parms stream to string. (hash::add): Aggregrate parms stream. (create_hash_log): New function to log hash operation. (find_*_hash): Log hash at the end of function. * cache.cxx (clean_cache): Remove log when cache reaches limitation. --- hash.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'hash.h') diff --git a/hash.h b/hash.h index 6bb1c78a..173f8e51 100644 --- a/hash.h +++ b/hash.h @@ -1,5 +1,7 @@ #include #include +#include +#include extern "C" { #include @@ -13,9 +15,11 @@ class hash { private: struct mdfour md4; + std::ostringstream parm_stream; public: hash() { start(); } + hash(const hash &base) { start(); parm_stream << base.parm_stream.str();} void start(); @@ -34,6 +38,7 @@ public: void add_file(const std::string& filename); void result(std::string& r); + std::string get_parms(); }; void find_hash (systemtap_session& s, const std::string& script); -- cgit