TraceFS
authorshort <>
Sat, 4 Oct 2003 05:34:51 +0000 (05:34 +0000)
committershort <>
Sat, 4 Oct 2003 05:34:51 +0000 (05:34 +0000)
configure.ac
project/Makefile.am
project/TraceFS/Index.html.pl [new file with mode: 0755]
project/TraceFS/ListItem.pm [new file with mode: 0755]
project/TraceFS/Makefile.am [new file with mode: 0644]
project/captive/doc/CacheManager.html.pl

index 9116950..2becdd2 100644 (file)
@@ -77,6 +77,7 @@ Makefile
 ./project/CasioA/Makefile
 ./project/LaserGame/Makefile
 ./project/ShortRel/Makefile
+./project/TraceFS/Makefile
 ])
 
 echo done.
index 9c4769a..92cec68 100644 (file)
@@ -60,7 +60,8 @@ SUBDIRS= \
                PortDiag        \
                CasioA          \
                LaserGame       \
-               ShortRel
+               ShortRel        \
+               TraceFS
 
 EXTRA_DIST+= \
                Index.html.pl \
diff --git a/project/TraceFS/Index.html.pl b/project/TraceFS/Index.html.pl
new file mode 100755 (executable)
index 0000000..9676210
--- /dev/null
@@ -0,0 +1,47 @@
+#! /usr/bin/perl
+# 
+# $Id$
+# Main page of 'My::Project::TraceFS'
+# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# 
+# This program 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; exactly version 2 of June 1991 is required
+# 
+# This program 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 this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+package project::TraceFS::Index;
+require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
+our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
+our $CVS_ID=q$Id$;
+use strict;
+use warnings;
+
+BEGIN{ open F,"Makefile"; our $top_dir=pop @{[split /\s/,(grep /^top_srcdir/,<F>)[0]]}; eval "use lib '$top_dir'"; close F; }
+use My::Web;
+use My::Project;
+use project::TraceFS::ListItem;
+
+
+My::Project->init_project(
+               "__PACKAGE__"=>__PACKAGE__,
+               "ListItem"=>\@project::TraceFS::ListItem::ListItem,
+               );
+
+print '<table border="0"><tr><td align="center">'
+               .My::Web::img($W->{"top_dir"}."/project/captive/doc/ntdebug-windbg-boot","TraceFS Initialization")
+               .'</td></tr></table>'."\n";
+
+print '<table border="0"><tr><td align="center">'
+               .My::Web::img($W->{"top_dir"}."/project/captive/doc/dia/TraceFS","TraceFS Hooking")
+               .'</td></tr></table>'."\n";
+
+My::Web->footer();
diff --git a/project/TraceFS/ListItem.pm b/project/TraceFS/ListItem.pm
new file mode 100755 (executable)
index 0000000..3bb40ee
--- /dev/null
@@ -0,0 +1,51 @@
+#! /usr/bin/perl
+# 
+# $Id$
+# Definition of 'My::Project::TraceFS' for list.cgi.pl
+# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# 
+# This program 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; exactly version 2 of June 1991 is required
+# 
+# This program 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 this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+package project::TraceFS::ListItem;
+require 5.6.0; # at least 'use warnings;' but we need some 5.6.0+ modules anyway
+our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; };
+our $CVS_ID=q$Id$;
+use strict;
+use warnings;
+
+use My::Web;
+
+
+our @ListItem=(
+               "name"=>"Trace Filesystem",
+               "priority"=>4,
+               "cvs"=>"priv/captive/src/TraceFS",
+               "link-Documentation"=>$W->{"top_dir"}."/project/captive/doc/CacheManager.html.pl#TraceFS",
+               "summary"=>"Microsoft Windows Kernel API Tracer",
+               "license"=>"GPL",
+               "maintenance"=>"ready",
+               "language"=>"C",
+               "description"=><<"HERE",
+<p>Project allows wrapping of Microsoft Windows Kernel API calls by the chosen
+kernel driver.</p>
+<p>Although TraceFS was up to now used only for tracing of Windows NT Cache
+Manager it can be easily used ever for any other NT kernel API tracing. You
+need to provide appropriate function wrappers in the main source file.
+Framework for thread synchronizations and debug tracing is provided to prevent
+mangling of messages while running by multiple threads at once.</p>
+HERE
+               );
+
+1;
diff --git a/project/TraceFS/Makefile.am b/project/TraceFS/Makefile.am
new file mode 100644 (file)
index 0000000..c561b56
--- /dev/null
@@ -0,0 +1,23 @@
+# $Id$
+# automake source for the Makefile of project/TraceFS/ subdir
+# Copyright (C) 2003 Jan Kratochvil <project-www.jankratochvil.net@jankratochvil.net>
+# 
+# This program 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; exactly version 2 of June 1991 is required
+# 
+# This program 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 this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+include $(top_srcdir)/Makefile-head.am
+
+EXTRA_DIST+= \
+       ListItem.pm \
+       Index.html.pl
index cc519f1..c845bca 100755 (executable)
@@ -293,8 +293,16 @@ print <<"HERE";
                        <span class="productname">NT Cache Manager</span> it can be easily
                        used ever for any other NT kernel API tracing. You need to provide
                        appropriate function wrappers in the main source file
-                       @{[ captive_srcfile './src/TraceFS/TraceFS-W32/TraceFS.c' ]}
-                       and you must also export them in
+                       @{[ captive_srcfile './src/TraceFS/TraceFS-W32/TraceFS.c' ]}.
+                       Original system functions being wrapped should be called with their
+                       original name. Your wrapping functions should have the first letter
+                       of their name replaced by character
+                       <span class="command">'T'</span> - wrapping of
+                       <span class="function">CcInitializeCacheMap()</span> must be
+                       done be your function
+                       <span class="function">TcInitializeCacheMap()</span>.
+                       Prototypes of both the wrapping and wrapped functions must be the same.
+                       You must also export all the wrapped functions by
                        @{[ captive_srcfile './src/TraceFS/TraceFS-W32/TraceFS.def' ]}.
                        @{[ captive_srcfile './src/TraceFS/hookfs.pl' ]} has no hardcoded
                        function names &ndash; it will hook exactly the exported entries.</p>