<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[Richard Zhao linux 空间]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[linux特别是kernel相关]]></description>
<link>http://hi.baidu.com/littertiger</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[gfp_zone]]></title>
        <link><![CDATA[http://hi.baidu.com/littertiger/blog/item/f3f42195250221027af48012.html]]></link>
        <description><![CDATA[
		
		gfp_zone函数作用：<br>
根据gfp flag确定选择哪一个zone来分配内存。<br>
<br>
static inline enum zone_type gfp_zone(gfp_t flags)<br>
{<br>
enum zone_type z;<br>
int bit = flags &amp; GFP_ZONEMASK;&#160; //获取zone相关的flag<br>
<br>
z = (GFP_ZONE_TABLE &gt;&gt; (bit * ZONES_SHIFT)) &amp; <br>
((1 &lt;&lt; ZONES_SHIFT) - 1);<br>
/*这里用到了GFP_ZONE_TABLE。zone的最大值所占用的bit数位ZONES_SHIFT。flag有各种的组合，0到组合的最大值都分别对应一个zone值，也就是需要占用ZONES_SHIFT bit数。(bit * ZONES_SHIFT)就是指组合值bit对应在zone table里所占用bit数的起始值。((1 &lt;&lt; ZONES_SHIFT) - 1)为ZONES_SHIFT个1。*/<br>
if (__builtin_constant_p(bit))<br>
BUILD_BUG_ON((GFP_ZONE_BAD &gt;&gt; bit) &amp; 1);<br>
else {<br>
#ifdef CONFIG_DEBUG_VM<br>
BUG_ON((GFP_ZONE_BAD &gt;&gt; bit) &amp; 1);<br>
#endif<br>
}<br>
return z;<br>
}<br> <a href="http://hi.baidu.com/littertiger/blog/item/f3f42195250221027af48012.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/littertiger/blog/category/Linux">Linux</a>&nbsp;<a href="http://hi.baidu.com/littertiger/blog/item/f3f42195250221027af48012.html#comment">查看评论</a>]]></description>
        <pubDate>2009-09-24  17:05</pubDate>
        <category><![CDATA[Linux]]></category>
        <author><![CDATA[tiger_zsch]]></author>
		<guid>http://hi.baidu.com/littertiger/blog/item/f3f42195250221027af48012.html</guid>
</item>

<item>
        <title><![CDATA[ubuntu 版本升级命令]]></title>
        <link><![CDATA[http://hi.baidu.com/littertiger/blog/item/91c1bb4480e30b45500ffe73.html]]></link>
        <description><![CDATA[
		
		do-release-upgrade 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/littertiger/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/littertiger/blog/item/91c1bb4480e30b45500ffe73.html#comment">查看评论</a>]]></description>
        <pubDate>2009-06-19  14:25</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[tiger_zsch]]></author>
		<guid>http://hi.baidu.com/littertiger/blog/item/91c1bb4480e30b45500ffe73.html</guid>
</item>

<item>
        <title><![CDATA[manpages-dev is deb package providing  Linux Programmer’s Manual]]></title>
        <link><![CDATA[http://hi.baidu.com/littertiger/blog/item/9c1b0501be4eb7087aec2c0e.html]]></link>
        <description><![CDATA[
		
		manpages-dev is deb package providing  Linux Programmer&rsquo;s Manual 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/littertiger/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/littertiger/blog/item/9c1b0501be4eb7087aec2c0e.html#comment">查看评论</a>]]></description>
        <pubDate>2008-07-21  14:06</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[tiger_zsch]]></author>
		<guid>http://hi.baidu.com/littertiger/blog/item/9c1b0501be4eb7087aec2c0e.html</guid>
</item>

<item>
        <title><![CDATA[kernel和udev间传递消息]]></title>
        <link><![CDATA[http://hi.baidu.com/littertiger/blog/item/315d12dd8448fedc8c102918.html]]></link>
        <description><![CDATA[
		
		kernel和udev间传递消息，比如add，remove等，是通过netlink进行。 netlink是个通用的机制，传递udev event只是其中一个应用。<br>
由于uevent是广播的，所以写个小程序很容易不会这些事件。<br>
写得比较匆忙，也很丑陋，呵呵。<br>
#include &lt;stdio.h&gt;<br>
#include &lt;sys/socket.h&gt;<br>
#include &lt;linux/netlink.h&gt;<br>
<br>
char buf[2048 + 512];<br>
int main()<br>
{<br>
&nbsp;&nbsp;&nbsp;  int bufsize = 16 * 1024 * 1024;<br>
&nbsp;&nbsp;&nbsp;  struct sockaddr_nl anl;<br>
&nbsp;&nbsp;&nbsp;  int res, i, sk;<br>
<br>
&nbsp;&nbsp;&nbsp;  anl.nl_family = AF_NETLINK;<br>
&nbsp;&nbsp;&nbsp;  anl.nl_pid = getpid();<br>
&nbsp;&nbsp;&nbsp;  anl.nl_groups = 1;<br>
<br>
&nbsp;&nbsp;&nbsp;  sk = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);<br>
&nbsp;&nbsp;&nbsp;  if (sk == -1){<br>
&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  printf(&quot;socket create failed\n&quot;);<br>
&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  return sk;<br>
&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;  <br>
&nbsp;&nbsp;&nbsp;  setsockopt(sk, SOL_SOCKET, SO_RCVBUFFORCE, &amp;bufsize, sizeof(bufsize));<br>
&nbsp;&nbsp;&nbsp;  res = bind(sk, &amp;anl, sizeof(anl));<br>
&nbsp;&nbsp;&nbsp;  if (res == -1){<br>
&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  close(sk);<br>
&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  printf(&quot;socket bind failed\n&quot;);<br>
&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  return res;<br>
&nbsp;&nbsp;&nbsp;  }<br>
<br>
&nbsp;&nbsp;&nbsp;  while(1){<br>
&nbsp;&nbsp;&nbsp;  res = recv(sk, buf, sizeof(buf), 0);<br>
&nbsp;&nbsp;&nbsp;  printf(&quot;res:%d\n&quot;,res);<br>
&nbsp;&nbsp;&nbsp;  res = res &gt; sizeof(buf) ? sizeof(buf) : res;<br>
&nbsp;&nbsp;&nbsp;  printf(&quot;begin\n&quot;);<br>
&nbsp;&nbsp;&nbsp;  for(i=0; i&lt;res; i++)<br>
&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;  putchar(buf[i]);<br>
&nbsp;&nbsp;&nbsp;  printf(&quot;end\n&quot;);<br>
&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;  return 0;<br>
<br>
} <a href="http://hi.baidu.com/littertiger/blog/item/315d12dd8448fedc8c102918.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/littertiger/blog/category/Linux">Linux</a>&nbsp;<a href="http://hi.baidu.com/littertiger/blog/item/315d12dd8448fedc8c102918.html#comment">查看评论</a>]]></description>
        <pubDate>2008-05-29  10:40</pubDate>
        <category><![CDATA[Linux]]></category>
        <author><![CDATA[tiger_zsch]]></author>
		<guid>http://hi.baidu.com/littertiger/blog/item/315d12dd8448fedc8c102918.html</guid>
</item>

<item>
        <title><![CDATA[lazy umount]]></title>
        <link><![CDATA[http://hi.baidu.com/littertiger/blog/item/1af39d8b4f77597a9f2fb4fe.html]]></link>
        <description><![CDATA[
		
		umount -l是lazy umount。即使在device busy的时候也可以umount。 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/littertiger/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/littertiger/blog/item/1af39d8b4f77597a9f2fb4fe.html#comment">查看评论</a>]]></description>
        <pubDate>2008-05-27  16:41</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[tiger_zsch]]></author>
		<guid>http://hi.baidu.com/littertiger/blog/item/1af39d8b4f77597a9f2fb4fe.html</guid>
</item>

<item>
        <title><![CDATA[c语言中goto的作用域]]></title>
        <link><![CDATA[http://hi.baidu.com/littertiger/blog/item/d762ca039310fe723812bbf2.html]]></link>
        <description><![CDATA[
		
		c中，goto只能用于在本函数中跳转，label的作用域也是本函数。也就是说，不同函数中可以定于名字相同的label。 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/littertiger/blog/category/Linux">Linux</a>&nbsp;<a href="http://hi.baidu.com/littertiger/blog/item/d762ca039310fe723812bbf2.html#comment">查看评论</a>]]></description>
        <pubDate>2008-05-13  09:25</pubDate>
        <category><![CDATA[Linux]]></category>
        <author><![CDATA[tiger_zsch]]></author>
		<guid>http://hi.baidu.com/littertiger/blog/item/d762ca039310fe723812bbf2.html</guid>
</item>

<item>
        <title><![CDATA[夏打盹来了？]]></title>
        <link><![CDATA[http://hi.baidu.com/littertiger/blog/item/b8dfe82a7aba069e023bf6e2.html]]></link>
        <description><![CDATA[
		
		所谓春困秋乏夏打盹，一点都不错。这几天上海的气温突然变高，二十六七度。整天都感觉睡不醒似的，头也昏昏沉沉的，记忆力也下降。 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/littertiger/blog/category/%CF%D0%D1%D4%CB%E9%D3%EF">闲言碎语</a>&nbsp;<a href="http://hi.baidu.com/littertiger/blog/item/b8dfe82a7aba069e023bf6e2.html#comment">查看评论</a>]]></description>
        <pubDate>2008-04-28  16:46</pubDate>
        <category><![CDATA[闲言碎语]]></category>
        <author><![CDATA[tiger_zsch]]></author>
		<guid>http://hi.baidu.com/littertiger/blog/item/b8dfe82a7aba069e023bf6e2.html</guid>
</item>

<item>
        <title><![CDATA[下雪了]]></title>
        <link><![CDATA[http://hi.baidu.com/littertiger/blog/item/c32db1b1b8bc1450082302c2.html]]></link>
        <description><![CDATA[
		
		终于看到了上海下雪，今天的虽然看起来不像雪，更像冰粒。上周六更像雪，一大片一大片的。<br>
去年似乎在上海就没有看到雪，只是阴冷阴冷的。今年全国范围内普降大雪，虽然对交通造成不变，但看着银装素裹的上海，也别有一番情趣。特别在浦东这边，早上都没有人踩的时候，雪更好看。 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/littertiger/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/littertiger/blog/item/c32db1b1b8bc1450082302c2.html#comment">查看评论</a>]]></description>
        <pubDate>2008-01-28  09:38</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[tiger_zsch]]></author>
		<guid>http://hi.baidu.com/littertiger/blog/item/c32db1b1b8bc1450082302c2.html</guid>
</item>

<item>
        <title><![CDATA[没有软盘如何做Driver Disk]]></title>
        <link><![CDATA[http://hi.baidu.com/littertiger/blog/item/df55e53303db8147ac4b5f21.html]]></link>
        <description><![CDATA[
		
		现在软驱渐渐淡出了人们的实现，但是redhat兼容的一些linux发行版有时还需要driver disk。<br>
driver disk就是驱动盘，比如说如果你的sata控制器比较新，而你的linux版本比较老不能认出你的硬件，你就必须用driver disk安装linux，就是在redhat安装提示时输入&ldquo;linux dd&rdquo;。传统上driver disk都是dd到软盘上使用的，driver disk的image可以从硬件官方网站上down。<br>
没有软驱怎么办？其实redhat的安装程序已经考虑到了。把一个已分区的u盘（通常是指由一个主分区sda1）挂到windows上，然后把driver disk的image copy上去，注意是已经解压后的*.img文件。然后插到待装机器的usb口，启动后，安装程序会询问你那个文件是driver disk的镜像，哈哈，选中你刚才copy进来的那个文件就可以了。<br>
<br>
driver disk另外一个注意的地方:如果你在已经装好的系统上又安装kernel，这个kernel的initrd默认是没有driver disk里面的驱动的。 <a href="http://hi.baidu.com/littertiger/blog/item/df55e53303db8147ac4b5f21.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/littertiger/blog/category/Linux">Linux</a>&nbsp;<a href="http://hi.baidu.com/littertiger/blog/item/df55e53303db8147ac4b5f21.html#comment">查看评论</a>]]></description>
        <pubDate>2008-01-22  15:11</pubDate>
        <category><![CDATA[Linux]]></category>
        <author><![CDATA[tiger_zsch]]></author>
		<guid>http://hi.baidu.com/littertiger/blog/item/df55e53303db8147ac4b5f21.html</guid>
</item>

<item>
        <title><![CDATA[kernel2.6.24里，i386和x86_64合并成了一个目录]]></title>
        <link><![CDATA[http://hi.baidu.com/littertiger/blog/item/24caa7503f239366843524bc.html]]></link>
        <description><![CDATA[
		
		今天把ubuntu升级到了hardy，kernel是2.6.24，发现代码里面arch下的i386和x86_64合并成了一个目录，ia64还是单独一个目录。 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/littertiger/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/littertiger/blog/item/24caa7503f239366843524bc.html#comment">查看评论</a>]]></description>
        <pubDate>2008-01-18  14:44</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[tiger_zsch]]></author>
		<guid>http://hi.baidu.com/littertiger/blog/item/24caa7503f239366843524bc.html</guid>
</item>


</channel>
</rss>