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;
// Èç¹û²»Êdz£¹æÎļþ»òÕßÊÇĿ¼Îļþ£¬Ôò·µ»Ø
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ϵÄÐźŴ¦Àíº¯Êý.
LinuxϵÄÐźŴ¦Àíº¯Êý:
1.ÐźŵIJúÉú
2.ÐźŵĴ¦Àí
3.ÆäËüÐźź¯Êý
--------------------------------------------------------------------------------
Ò»¸öʵÀý
1¡£ÐźŵIJúÉú ......
Ëæ×ÅLinuxÓ¦ÓõÄÀ©Õ¹Ðí¶àÅóÓÑ¿ªÊ¼½Ó´¥Linux£¬¸ù¾ÝѧϰWindwosµÄ¾ÑéÍùÍùÓÐһЩãȻµÄ¸Ð¾õ£º²»Öª´ÓºÎ´¦¿ªÊ¼Ñ§Æð¡£ÕâÀï½éÉÜѧϰLinuxµÄһЩ½¨Òé¡£
Ò»¡¢´Ó»ù´¡¿ªÊ¼£º³£³£ÓÐЩÅóÓÑÔÚLinuxÂÛ̳ÎÊһЩÎÊÌ⣬²»¹ý£¬ÆäÖдó¶àÊýµÄÎÊÌâ¶¼ÊǺܻù´¡µÄ¡£ÀýÈ磺ΪʲôÎÒʹÓÃÒ»¸öÃüÁîµÄʱºò£¬ÏµÍ³¸æËßÎÒÕÒ²»µ½¸ÃĿ¼£¬ÎÒÒªÈçºÎÏÞÖÆÊ¹ÓÃÕß ......
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 ......
ѹËõºÍ´ò°üÎļþ
¡¡¡¡* .bz2 — ʹÓÃbzip2ÃüÁîѹËõµÄÎļþ£¬¿ÉÒÔʹÓÃbzip2 -d filename ½â°ü
¡¡¡¡* .gz — ʹÓÃgzipÃüÁîѹËõµÄÎļþ£¬¿ÉÒÔʹÓÃgunzip -d filename ½â°ü
¡¡¡¡* .tar — ʹÓÃtar´ò°üµÄÎļþ£¬¼´tarballÎļþ£¬¿ÉÒÔʹÓÃtar xf filename ½â°ü
¡¡¡¡* .tbz — ʹÓÃtar´òÍê°üºóÔÙÒÔbzip2ÃüÁ ......
×ܽáÕ½ڣºµÚÈý½Ú ×Ö·ûÉ豸Çý¶¯
ÕâÒ»ÕÂÖ÷ÒªÊǽ²Ò»Ð©×Ö·ûÉ豸Çý¶¯³ÌÐòµÄÏà¹ØÖªÊ¶¡£ÔÚ½øÐÐ×Ö·ûÉ豸Çý¶¯³ÌÐòѧϰ֮ǰ£¬ÎÒÃDZØÐëµÃŪÃ÷°×Ò»¸öÎÊÌ⣺Çý¶¯³ÌÐòʱ¸øËÓõġ£
ºÜ¶àÇý¶¯³ÌÐòµÄ³õѧÕߣ¬°´ÕÕÒ»°ã±à³ÌÓïÑÔ£¨C£¬javaµÈµÈ£©±àдӦÓóÌÐòµÄ¾Ñ飬º¯Êý¾ÍÊÇÓÃÀ´µ÷Óõġ£ÕâÖÖµ÷ÓùØÏµ£¬ÔÚÓ¦ÓÿռäÀ´¿´£¬ÏÞÖÆ²»ÊǺÜÃ÷ÏÔ¡£ºÜ¶à ......