linux 0.11 内核学习 bitmap.c
/*
* linux/fs/bitmap.c
*
* (C) 1991 Linus Torvalds
*/
/* bitmap.c contains the code that handles the inode and block bitmaps */
#include <string.h>
#include <linux/sched.h>
#include <linux/kernel.h> // 一些内核常用函数的原形定义
/* 将指定地址(addr)处的一块内存清零 */
#define clear_block(addr) \
__asm__("cld\n\t" \
"rep\n\t" \
"stosl" \
::"a" (0),"c" (BLOCK_SIZE/4),"D" ((long) (addr)):"cx","di")
/* 置位指定地址开始的第nr 个位偏移处的比特位 */
#define set_bit(nr,addr) ({\
register int res __asm__("ax"); \
__asm__ __volatile__("btsl %2,%3\n\tsetb %%al": \
"=a" (res):"0" (0),"r" (nr),"m" (*(addr))); \
res;})
/* 复位指定地址addr开始的第nr 位偏移处的比特位 */
#define clear_bit(nr,addr) ({\
register int res __asm__("ax"); \
__asm__ __volatile__("btrl %2,%3\n\tsetnb %%al": \
"=a" (res):"0" (0),"r" (nr),"m" (*(addr))); \
res;})
/* 从addr 开始寻找第1 个0 值比特位,并将其距离addr 的比特位偏移值返回 */
#define find_first_zero(addr) ({ \
int __res; \
__asm__("cld\n" \
"1:\tlodsl\n\t" \
"notl %%eax\n\t" \
"bsfl %%eax,%%edx\n\t" \
"je 2f\n\t" \
"addl %%edx,%%ecx\n\t" \
"jmp 3f\n" \
"2:\taddl $32,%%ecx\n\t" \
"cmpl $8192,%%ecx\n\t" \
"jl 1b\n" \
"3:" \
:"=c" (__res):"c" (0),"S" (addr):"ax","dx","si"); \
__res;})
/* 复位指定逻辑块block (相对于磁盘而言)的逻辑块位图比特位 */
void free_block(int dev, int block)
{
struct super_block * sb;
struct buffer_head * bh;
if (!(sb = get_super(dev))) // 取指定设备dev 的超级块
panic("trying to free block on nonexistent device"); // 设备不存在
// 若逻辑块号小于首个逻辑块号或者大于设备上总逻辑块数
if (block < sb->s_firstdatazone || block >= sb->s_nzones)
panic("trying to free block not in datazone");
bh = get_hash_table(dev,block); // 从hash 表中寻找该块数据
if (bh) // 合法?
{
if (bh->b_count != 1) // 只有该进程占据block
{
printk("trying to free block (%04x:%d), count=%d\n",
相关文档:
2008-07-07 22:09
6,TCP filter的原理:
当filter收到某个连接的第一个报文时,会为该连接在全局连接表中创建一个表项,并用报文中携带的源、目的IP和端口这个四元组创建original tuple和reply tuple,这两个tuple分别从不同方向来标识这个连接。后续的报文会根据其携带的四元组找到相应的连接表项,然后根据表项所记录 ......
linux和unix下常用解压和压缩命令
.tar
解包: tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
---------------------------------------------
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz
解压:tar zxvf FileName.ta ......
linux下vncserver配置与win下vnc客户端
8 Nov, 2008
管理&服务
< type="text/javascript"><!--
google_ad_client = "pub-7056129240767270";
/* 300x250, 创建于 09-2-13 */
google_ad_slot = "270491 ......
详细的介绍了J2EE 1.4 application Server for Linux的安装与配置。值得借鉴。
By Jawa from LinuxAID Forum
① 采用RedhatLinux 9 Personal 简体中文版的完全安装(5GB),
安装完毕后MySQL 3和Mozilla 1.2.1等软件已被安装到Linux中。本说明针对Linux自带的原有MySQL,不另行安装MySQL。为了 ......
原来由于学习工作的需要,在XP下装了LINUX系统,安装XP/LINUX双系统麻烦,没想到卸载也麻烦。刚开始以为把装LINUX系统的那个盘格式化就OK了,结果重启后仍然出现那个可恨的grub引导界面。一气之下,重装C盘,grub界面没了,可却进不了系统。网上多方查找,最后解决办法:下载mbrfix文件到u盘,用系统盘进入到WINPE,将mbrfi ......