From: Ian Jackson <ian.jackson@eu.citrix.com>
To: xen-devel@lists.xensource.com
Cc: Ian Jackson <ian.jackson@eu.citrix.com>
Subject: [PATCH 3/4] docs/html/hcall: Generate an "index.html"
Date: Sun, 13 Nov 2011 19:21:05 +0000 [thread overview]
Message-ID: <1321212066-10648-4-git-send-email-ian.jackson@eu.citrix.com> (raw)
In-Reply-To: <1321212066-10648-1-git-send-email-ian.jackson@eu.citrix.com>
Generate an "index.html" containing various useful links.
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
| 55 ++++++++++++++++++++++++++++++++++++++++++++++
xen/include/public/xen.h | 4 ++-
2 files changed, 58 insertions(+), 1 deletions(-)
--git a/docs/xen-headers b/docs/xen-headers
index 6918380..3cc9e40 100755
--- a/docs/xen-headers
+++ b/docs/xen-headers
@@ -50,6 +50,8 @@ my ($basedir,@indirs) = @ARGV;
# general globals
our $pass;
our %sdef;
+our @incontents;
+our @outfiles;
# $sdef{$type}{$name} => {
# DefLocs => { "$leaf_path:$lineno" => $leaf_opath ,... }
# Xrefs => { "$leaf_path,$lineno" => "$xref", ... }
@@ -177,6 +179,19 @@ sub out_xrefs ($) {
@pending_xrefs = ();
}
+sub incontents ($$$) {
+ my ($text, $seq, $anchor) = @_;
+ $anchor = "incontents_$anchor";
+ if ($pass==2) {
+ push @incontents, {
+ Seq => $seq,
+ Href => "$leaf_opath#$anchor",
+ Title => $text,
+ };
+ }
+ return "<a name=\"$anchor\"><strong>$text</strong></a>";
+}
+
sub write_file ($$) {
my ($opath, $odata) = @_;
my $out = new IO::File "$opath.new", '>' or die "$opath $!";
@@ -231,6 +246,8 @@ sub process_file ($$) {
}
} elsif (s/^( \s* \#define \s+ ) (\w+) ( \s+\S )
/ $1.defmacro($2).norm($3) /xe) {
+ } elsif (s/( \`incontents \s+ (\d+) \s+ (\w+) \s+ )(\S .* \S)
+ / norm($1).incontents($4, $2, $3) /xe) {
} else {
if (m/^\s*\}/) {
$in_enum = undef;
@@ -250,11 +267,47 @@ sub process_file ($$) {
warning("pending xrefs at end of file") if @pending_xrefs;
if ($pass == 2) {
+ push @outfiles, [ $leaf, $leaf_opath ];
$o .= "</pre></body></html>";
write_file($outfile, $o);
}
}
+sub output_index () {
+ my $title = "contents - $xtitle";
+ $o = '';
+ $o .= <<END;
+<html><head><title>$title</title></head>
+<body>
+<h1>$title</h1>
+<h2>Starting points</h2>
+<ul>
+END
+ foreach my $ic (sort { $a->{Seq} <=> $b->{Seq} } @incontents) {
+ $o .= "<li><a href=\"$ic->{Href}\">$ic->{Title}</a></li>\n";
+ }
+ $o .= "</ul>\n";
+ my $forkind = sub {
+ my ($type,$desc,$pfx,$sfx) = @_;
+ $o .= "<h2>$desc</h2><ul>\n";
+ foreach my $name (sort keys %{ $sdef{$type} }) {
+ my $href = refhref($type,$name);
+ next unless $href =~ m/\S/;
+ $o .= "<li><a $href>$pfx$name$sfx</a></li>\n";
+ }
+ $o .= "</ul>\n";
+ };
+ $forkind->('Func','Functions','','()');
+ $forkind->('Struct','Structs','struct ','');
+ $forkind->('Enum','Enums and sets of #defines','','');
+ $forkind->('EnumVal','Enum values and individual #defines','','');
+ $o .= "</ul>\n<h2>Files</h2><ul>\n";
+ foreach my $of (sort { $a->[0] cmp $b->[0] } @outfiles) {
+ $o .= "<li><a href=\"$of->[1]\">$of->[0]</a></li>\n";
+ }
+ $o .= "</ul></body></html>\n";
+ write_file("$outdir/index.html", $o);
+}
foreach $pass (qw(1 2)) {
find({ wanted =>
@@ -279,3 +332,5 @@ foreach $pass (qw(1 2)) {
},
map { "$basedir/$_" } @indirs);
}
+
+output_index();
diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h
index f2c9e6f..a5b6ad8 100644
--- a/xen/include/public/xen.h
+++ b/xen/include/public/xen.h
@@ -55,7 +55,9 @@ DEFINE_XEN_GUEST_HANDLE(xen_pfn_t);
* HYPERCALLS
*/
-/* ` enum hypercall_num { // __HYPERVISOR_* => HYPERVISOR_*() */
+/* `incontents 100 hcalls List of hypercalls
+ * ` enum hypercall_num { // __HYPERVISOR_* => HYPERVISOR_*()
+ */
#define __HYPERVISOR_set_trap_table 0
#define __HYPERVISOR_mmu_update 1
--
1.7.2.5
next prev parent reply other threads:[~2011-11-13 19:21 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-13 19:21 [PATCH 0/4] docs/html/hcall: Hypercall docs headers Ian Jackson
2011-11-13 19:21 ` [PATCH 1/4] docs/html/hcall: Initial cut of header documentation massager Ian Jackson
2011-11-14 9:59 ` Ian Campbell
2011-11-14 17:20 ` Ian Jackson
2011-11-13 19:21 ` [PATCH 2/4] docs/html/hcall: Annotations for two hypercalls Ian Jackson
2011-11-14 10:12 ` Ian Campbell
2011-11-14 17:22 ` Ian Jackson
2011-11-14 18:40 ` Konrad Rzeszutek Wilk
2011-11-15 14:47 ` Ian Jackson
2011-11-15 15:00 ` Konrad Rzeszutek Wilk
2011-11-29 14:21 ` Ian Jackson
2011-11-13 19:21 ` Ian Jackson [this message]
2011-11-14 10:13 ` [PATCH 3/4] docs/html/hcall: Generate an "index.html" Ian Campbell
2011-11-14 17:23 ` Ian Jackson
2011-11-13 19:21 ` [PATCH 4/4] docs/html/hcall: Arrange for automatic build Ian Jackson
2011-11-14 10:13 ` [PATCH 0/4] docs/html/hcall: Hypercall docs headers Ian Campbell
2011-11-14 17:24 ` Ian Jackson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1321212066-10648-4-git-send-email-ian.jackson@eu.citrix.com \
--to=ian.jackson@eu.citrix.com \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).