梦见锡安
msgbartop
小舟从此逝,江海寄余生。
msgbarbottom

高亮LXR的代码 | 2009年04月29日

LXR ── Linux Cross Refercence。Linux内核源码阅读和查询的利器之一,不用多介绍了。LXR安装后看到的源码是没有颜色的,用惯了语法高亮的编辑器,一下子看到满屏的黑白代码不免有点枯燥。于是给它装了个可以显示语法颜色的工具。

1、安装google-code-prettify

项目地址是:http://code.google.com/p/google-code-prettify/

$ wget http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.css
$ wget http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.js

我把它们放到lxr的安装目录下面,lxr我放在web服务器的根目录,所以就

2、修改lxr/http/template-head

这是lxr默认的html头,在<head></head>标签之间加上

1
2
<link href="/lxr/prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="/lxr/prettify.js"></script>

注意文件路径,不在乎需要从远方服务器读取的话,也可以

1
2
<link href='http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.css' rel='stylesheet' type='text/css'/>
<script src='http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.js' type='text/javascript'></script>

这样也可以让google-code-prettify的维护者来自行维护这些脚本。

然后找到<body>标签:

1
<body bgcolor=white>

改为

1
<body bgcolor=white  onload='prettyPrint()'>

3、修改lxr/http/source

这是个perl脚本,查找字符串"<pre>",这有好几处,都在printfile这个子函数里面,改为

1
<pre class=\"prettyprint\">

已经好了,这样再看LXR里面的代码就可以看到漂亮的语法颜色了。效果图:

2009-05-01 Update:

上面的效果图有一个问题,就是代码的行号也被渲染高亮了。这个可以通过给行号标识加上"nocode"这个prettifier提供的class来解决。对lxr/http/lib/LXR/Common.pm进行如下修改即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
diff --git a/Common.pm b/Common.pm
index 9e23088..529d5a2 100755
--- a/Common.pm
+++ b/Common.pm
@@ -151,7 +151,7 @@ sub linetag {
     $tag .= ' ' if $_[1] < 10;
     $tag .= ' ' if $_[1] < 100;
     $tag .= &fileref($_[1], $_[0], $_[1]).' ';
-    $tag =~ s/<a/<a name=L$_[1]/;
+    $tag =~ s/<a/<a class="nocode" name=L$_[1]/;
 #    $_[1]++;
     return($tag);
 }

还可以在自己的css文件里面重写nocode这个class,例如加个方框啥的。


内核编程相关文档 | 2009年04月25日

备忘一下。今年一直在计划重点深入学习内核,参考文档是不可少的。LKD、LDD等书以前看过,但是最靠谱的应该还是跟踪内核本身给的文档。除了Documentation目录下面的资料之外,也可以直接make一些manpages之类供随时在线看。

参考:Linux内核源码包的README。

需要:内核源代码包、make等相关建立工具、docbook-utils等。

第一个动作当然是更改当前工作目录到内核源码根目录了……:

$ cd $KERN_SRC_ROOT

1、生成内核API的手册页:

$ make mandocs

安装内核API的手册页

$ sudo make installmandocs

更新manpages的数据库缓存

$ sudo mandb

列出内核API手册页

$ apropos –section=9 *

也可以用我以前搞的一个瓜脚本manindex来列man的条目:

$ manindex 9

2、生成内核的在线html文档

$ make htmldocs

这里有一个已经做好的html内核文档,对应内核版本是2.6.29.1。

3、生成pdf格式的内核文档

$ make pdfdocs

这个我make失败鸟,看log看不懂,对docbook一点都不了解啊,,不过有man有html已经足够用了。