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

linux 0.11 内核学习 truncate.c


/*
 * 该文件主要实现的是truncate函数,该函数是释放指定i 
 * 节点在设备上占用的所有逻辑块,包括直接块、一次间
 * 接块和二次间接块
 */
/*
 *  linux/fs/truncate.c
 *
 *  (C) 1991  Linus Torvalds
 */
#include <linux/sched.h>
#include <sys/stat.h>
/* 释放一次间接块,参数int dev, int block指明一次间接块的设备号 */
static void free_ind(int dev,int block)
{
struct buffer_head * bh;
unsigned short * p;
int i;
// 如果逻辑块号为0,则返回
if (!block)
return;
// 读取一次间接块,并释放其上表明使用的所有逻辑
// 块,然后释放该一次间接块的缓冲区
if (bh=bread(dev,block)) {
p = (unsigned short *) bh->b_data;
for (i=0;i<512;i++,p++)
if (*p)
free_block(dev,*p);
brelse(bh);
}
free_block(dev,block);
}
/* 释放二次间接块,int dev, int block指明二次间接块的逻辑号 */
static void free_dind(int dev,int block)
{
struct buffer_head * bh;
unsigned short * p;
int i;
if (!block)
return;
if (bh=bread(dev,block)) 
{
p = (unsigned short *) bh->b_data;
for (i=0;i<512;i++,p++)
if (*p)
free_ind(dev,*p);
brelse(bh);
}
free_block(dev,block);
}
/* 将节点对应的文件长度截为0,并释放占用的设备空间 */
void truncate(struct m_inode * inode)
{
int i;
// 如果不是常规文件或者是目录文件,则返回
if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode)))
return;
// 释放i 节点的7 个直接逻辑块,并将这7 个逻辑块项全置零
/*********************直接块************************/
for (i=0;i<7;i++)
if (inode->i_zone[i]) {
free_block(inode->i_dev,inode->i_zone[i]);
inode->i_zone[i]=0;
}
/*************************************************/
// 释放一次间接块
free_ind(inode->i_dev,inode->i_zone[7]);
// 释放二次间接块
free_dind(inode->i_dev,inode->i_zone[8]);
// 逻辑块项7、8 置零
inode->i_zone[7] = inode->i_zone[8] = 0;
// 文件大小置零
inode->i_size = 0;
// 置节


相关文档:

linux ext2 文件系统恢复被删除的文件

linux   ext2   文件系统恢复被删除的文件   
    
  发布日期:2002-08-08   
  文章内容:   
  ------------------------------------------------------------------------   
  --------   
  by   ......

Linux上构筑iPhone OS3.1.2开发环境之解压firmware


Linux上构筑iPhone OS3.1.2开发环境搭建
教程地址:  http://www.yifeiyang.net/iphone-development-introduction-3-linux-development-environment-on-the-build-iphone-os3-1-2/
#第一步没有什么问题
$ ./toolchain.sh headers
#第二步也顺利通过
$ ./toolchain.sh firmware
#第三步也挺顺利
$ ./toolchain ......

linux命令的全称~~~·

转载自:http://www.91linux.com/html/article/go/20090205/15634.html
bin = BINaries (binary)
/dev = devices
/etc = ETCetera
etcetera附加的人, 附加物, 以及其它, 等等
/lib = LIBrary
/proc = PROCesses
/sbin
= Superuser BINaries
/tmp = TeMPorary
/usr = Unix Shared
Resources
/var = ......

《LINUX设备驱动程序》学习札记(二)

总结章节:第三节 字符设备驱动
这一章主要是讲一些字符设备驱动程序的相关知识。在进行字符设备驱动程序学习之前,我们必须得弄明白一个问题:驱动程序时给谁用的。
很多驱动程序的初学者,按照一般编程语言(C,java等等)编写应用程序的经验,函数就是用来调用的。这种调用关系,在应用空间来看,限制不是很明显。很多 ......

Linux 内核配置

Linux内核配置办法:
1. make config
这种办法会遍历所有配置项,要求用户逐个选择Y/N/M
2. make menuconfig
这个办法是基于ncurse库编制的图形界面工具。常用
3. make xconfig
用于基于X11的图形工具
4. make gconfig
用于基于gtk+图形工具
5. make defconfig
创建一个默认的配置,生成当前的.config
6. make x ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号