易截截图软件、单文件、免安装、纯绿色、仅160KB

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",


相关文档:

学习过程中遇到的一些linux操作tips

启动/重启/停止一个服务
/etc/init.d/program_name start
比如邮件服务器postfix可以这样: sudo /etc/init.d/postfix start
------------------------------------------------
设置程序到启动组里:
# chkconfig program_name on
比如:sudo chkconfig postfix on
----------------------------------------------- ......

Linux一句话问题解答之二

1101 linux中刻录iso的方法(hutuworm)
方法一:使用xcdroast,选择制作光碟,选择ISO文件,刻录!
参见[url]http://www.xcdroast.org/xcdr098/faq-a15.html#17[/url]
方法二:找刻录机的命令:
cdrecord --scanbus
输出结果为:
0,0,0 0) 'ATAPI ' 'CD-R/RW 8X4X32 ' '5.EZ' Removable CD-ROM
刻录的命令:
cdrecord ......

linux与j2ee

J2ee程序员应该掌握的linux知识
开发者在线 Builder.com.cn 更新时间:2007-09-01作者:中国IT实验室 来源:中国IT实验室
本文关键词: Linux J2ee
 一般大型J2EE应用都在建构在linux环境下的。开发环境下我们可以通过samba映射成本地的网络驱动器,直接在windows环境下进行编程调试。但是最后的发布还是要到linux环境, ......

linux,windows沟通的桥梁ssh

介绍SSH
什么是SSH?
传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中 ......

XP/LINUX双系统如何正常卸载LINUX

原来由于学习工作的需要,在XP下装了LINUX系统,安装XP/LINUX双系统麻烦,没想到卸载也麻烦。刚开始以为把装LINUX系统的那个盘格式化就OK了,结果重启后仍然出现那个可恨的grub引导界面。一气之下,重装C盘,grub界面没了,可却进不了系统。网上多方查找,最后解决办法:下载mbrfix文件到u盘,用系统盘进入到WINPE,将mbrfi ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号