Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

linux 0.11 ÄÚºËѧϰ block_dev.c


/*
 * ¸ÃÎļþµÄÁ½¸öº¯ÊýÊÇΪÁËÏòopenºÍwriteº¯ÊýÌṩ½Ó¿Ú£¬ÊµÏÖÄÚºËÊý¾Ý
 * ºÍÓû§Êý¾ÝµÄ½»»¥
 */
/*
 *  linux/fs/block_dev.c
 *
 *  (C) 1991  Linus Torvalds
 */
#include <errno.h>
#include <linux/sched.h>
#include <linux/kernel.h>
#include <asm/segment.h>
#include <asm/system.h>
/*
 *    |   block1   |block 2|block 3|
 * ---|-----|------|-------|-------|-------|-------|----
 * ---|-----|------|-------|-------|-------|-------|----
 *    |<--->|<---->|------>|------>|
 *    offset  chars  chars1  chars2
 * --pos--->|<--------count------->|
 */
/* ÏòÖ¸¶¨É豸´Ó¸ø¶¨Æ«ÒÆ´¦Ð´ÈëÖ¸¶¨³¤¶È×Ö½ÚÊý¾Ý£¬count - Òª´«Ë͵Ä×Ö½ÚÊý */
/* dev - É豸ºÅ£»pos - É豸ÎļþÖÐÆ«ÒÆÁ¿Ö¸Õ룻buf - Óû§µØÖ·¿Õ¼äÖлº³åÇøµØÖ· */
int block_write(int dev, long * pos, char * buf, int count)
{
// ¶ÔÓÚÄÚºËÀ´Ëµ£¬Ð´²Ù×÷ÊÇÏò¸ßËÙ»º³åÇøÖÐдÈëÊý¾Ý£¬Ê²Ã´Ê±ºòÊý¾Ý×îÖÕдÈëÉ豸ÊÇÓɸßËÙ»º³å¹ÜÀí
// ³ÌÐò¾ö¶¨²¢´¦ÀíµÄ¡£ÁíÍ⣬ÒòΪÉ豸ÊÇÒÔ¿éΪµ¥Î»½øÐжÁдµÄ£¬Òò´Ë¶ÔÓÚд¿ªÊ¼Î»Öò»´¦ÓÚ¿éÆðʼ
// ´¦Ê±£¬ÐèÒªÏȽ«¿ªÊ¼×Ö½ÚËùÔÚµÄÕû¸ö¿é¶Á³ö£¬È»ºó½«ÐèҪдµÄÊý¾Ý´Óд¿ªÊ¼´¦ÌîдÂú¸Ã¿é£¬ÔÙ½«Íê
// ÕûµÄÒ»¿éÊý¾ÝдÅÌ£¨¼´½»ÓɸßËÙ»º³å³ÌÐòÈ¥´¦Àí£©
// ÓÉpos µØÖ·»»Ëã³É¿ªÊ¼¶Áд¿éµÄ¿éÐòºÅblock¡£²¢Çó³öÐè¶ÁµÚ1 ×Ö½ÚÔڸÿéÖÐµÄÆ«ÒÆÎ»ÖÃoffset
int block = *pos >> BLOCK_SIZE_BITS;
int offset = *pos & (BLOCK_SIZE-1);
int chars;
int written = 0;
struct buffer_head * bh;
register char * p;
while (count>0) {
chars = BLOCK_SIZE - offset; // ¼ÆËãÔڸÿéÖпÉдÈëµÄ×Ö½ÚÊý
// Èç¹ûÐèҪдÈëµÄ×Ö½ÚÊýÌî²»ÂúÒ»¿é£¬ÔòÖ»Ðèдcount ×Ö½Ú
if (chars > count)
chars=count;
// Èç¹ûÕýºÃҪд1 ¿éÊý¾Ý£¬ÔòÖ±½ÓÉêÇë1 ¿é¸ßËÙ»º³å¿é
if (chars == BLOCK_SIZE)
bh = getblk(dev,block);
// ·ñÔòÐèÒª¶ÁÈ뽫±»Ð޸ĵÄÊý¾Ý¿é£¬²¢Ô¤¶Á
// ÏÂÁ½¿éÊý¾Ý£¬È»ºó½«¿éºÅµÝÔö1
else
bh = breada(dev,block,block+1,block+2,-1);
block++;


Ïà¹ØÎĵµ£º

Linuxѧϰ±Ê¼Ç——DHCP·þÎñ


£­¡¢¸ÅÄî
       1¡¢DHCP£º¶¯Ì¬Ö÷»úÅäÖÃЭÒé
                     ×÷ÓãºÓÃÓÚ¼ò»¯IPÅä¹ÜÀíµÄTCP/IP±ê×¼¡£
       2¡¢DHCP¹¤×÷Á÷³Ì£º
 &nb ......

Unix/Linux ϵͳ×Ô¶¯»¯¹ÜÀí: ½ø³Ì¹ÜÀíÆª


Unix/Linux ½ø³Ì¹ÜÀíÏà¹ØÃüÁî½éÉÜ
½ø³ÌÊDzÙ×÷ϵͳÓÃÓÚ¿ØÖÆÏµÍ³×ÊԴʹÓõÄʵÌå¡£Unix/Linux ½ø³Ì¹ÜÀíÏà¹ØµÄÃüÁîÖ÷ÒªÓÐÒÔϼ¸¸ö£¬ÔÚºóÃæµÄ½Å±¾ÊµÏÖÖлáÓõ½²¿·ÖÃüÁî¡£
ÏÔʾ½ø³ÌÊôÐÔÃüÁî
ps ÃüÁ¸ÃÃüÁîÊÇ×î»ù±¾Í¬Ê±Ò²ÊǷdz£Ç¿´óµÄ½ø³Ì²é¿´ÃüÁÓÃÓÚ±¨¸æ½ø³Ì±êʶ¡¢Óû§¡¢CPU ʱ¼äÏûºÄÒÔ¼°ÆäËûÊôÐÔ¡£ÀûÓÃËü¿ÉÒÔÈ·¶¨ÓÐÄÄÐ ......

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> // һЩÄں˳£Óú¯ÊýµÄÔ­Ðζ¨Òå
......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ