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

linux 0.11 ÄÚºËѧϰ read_write.c


/*
 * ¸ÃÎļþʵÏÖϵͳµ÷ÓÃread£¬writeºÍlseek¡£
 */
/*
 *  linux/fs/read_write.c
 *
 *  (C) 1991  Linus Torvalds
 */
#include <sys/stat.h>
#include <errno.h>
#include <sys/types.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <asm/segment.h>
/* ×Ö·ûÉ豸¶Áдº¯Êý */
extern int rw_char(int rw,int dev, char * buf, int count, off_t * pos);
/* ¶Á¹ÜµÀ²Ù×÷º¯Êý */
extern int read_pipe(struct m_inode * inode, char * buf, int count);
/* д¹ÜµÀ²Ù×÷º¯Êý */
extern int write_pipe(struct m_inode * inode, char * buf, int count);
/* ¿éÉ豸¶Á²Ù×÷º¯Êý */
extern int block_read(int dev, off_t * pos, char * buf, int count);
/* ¿éÉ豸д²Ù×÷º¯Êý */
extern int block_write(int dev, off_t * pos, char * buf, int count);
/* ¶ÁÎļþ²Ù×÷º¯Êý */
extern int file_read(struct m_inode * inode, struct file * filp,
char * buf, int count);
/* дÎļþ²Ù×÷º¯Êý */
extern int file_write(struct m_inode * inode, struct file * filp,
char * buf, int count);
/* Öض¨Î»Îļþ¶ÁдָÕëϵͳµ÷Óú¯Êý£¬²ÎÊýfdÊÇÎļþ¾ä±ú£¬offsetÊÇеÄÎļþ */
/* ¶ÁдƫÒÆÁ¿£¬originÊÇÆ«ÒƵÄÆðʼµØÖ·£¬¿ÉÄÜÊÇÏÂÃæµÄÈý¸öÖµ£ºSEEK_SET   */
/* ÎļþµÄ¿ªÊ¼´¦£¬SEEK_CURµ±Ç°µÄ¶ÁдλÖã¬SEEK_ENDÎļþ½áβ´¦           */
int sys_lseek(unsigned int fd,off_t offset, int origin)
{
struct file * file;
int tmp;
// Èç¹ûÎļþ¾ä±úÖµ´óÓÚ³ÌÐò×î¶à´ò¿ªÎļþÊýNR_OPEN(20)£¬»òÕ߸þä±úµÄÎļþ½á¹¹Ö¸ÕëΪ¿Õ£¬»òÕß
// ¶ÔÓ¦Îļþ½á¹¹µÄi ½Úµã×Ö¶ÎΪ¿Õ£¬»òÕßÖ¸¶¨É豸ÎļþÖ¸ÕëÊDz»¿É¶¨Î»µÄ£¬Ôò·µ»Ø³ö´íÂë²¢Í˳ö
if (fd >= NR_OPEN || !(file=current->filp[fd]) || !(file->f_inode)
  || !IS_SEEKABLE(MAJOR(file->f_inode->i_dev)))
return -EBADF;
// Èç¹ûÎļþ¶ÔÓ¦µÄi ½ÚµãÊǹܵÀ½Úµã£¬Ôò·µ»Ø³ö´íÂ룬Í˳ö
if (file->f_inode->i_pipe)
return -ESPIPE;
switch (origin) {
case 0: // SEEK_SET
// ÈôÆ«ÒÆֵСÓÚÁ㣬Ôò³ö´í
if (offset<0) return -EINVAL;
// ÉèÖÃÎļþ¶ÁдָÕëµÈÓÚoffset
file->f_


Ïà¹ØÎĵµ£º

LinuxÏÂCÓïÑÔ±à³Ì ÐźŴ¦Àíº¯Êý

Ç°ÑÔ:ÕâÒ»ÕÂÎÒÃÇÌÖÂÛÒ»ÏÂLinuxϵÄÐźŴ¦Àíº¯Êý. 
     LinuxϵÄÐźŴ¦Àíº¯Êý: 
1.ÐźŵIJúÉú 
2.ÐźŵĴ¦Àí 
3.ÆäËüÐźź¯Êý 
--------------------------------------------------------------------------------
Ò»¸öʵÀý 
1¡£ÐźŵIJúÉú  ......

Linux±³ºóµÄÈË

1. LinusºÍBill
    ËƺõÔÚÒ»Ò¹Ö®¼ä£¬Õâ¸öÃû×ÖͻȻ±äµÃͬÏó±È¶û¡£¸Ç´ÄÒ»ÑùµÄ¶úÊìÄÜÏê¡£µ«ÊDZȶû¡£¸Ç´Ä£¬ÄÄÅÂÉí¼ÛÓÐÊý²»Ç屶µÄ°ÙÍòÃÀ½ð£¬Ò²ÓÀÔ¶²»»á±ä³ÉLinux Torvalds¡£Õâλ29ËêµÄ·ÒÀ¼ÈË£¬¼òµ¥¶øÇ¿´óµÄLinux²Ù×÷ϵͳµÄ´´ÔìÕߣ¬³¬Ô½Á˸ǴĵÄÉñ»°¡£Ò²Óд«ÎÅ˵¸Ç´ÄÊÇÒ»¸ö׿ԽµÄ³ÌÐòÔ±£¬µ«LinusÊÇ»õÕæ¼ÛʵµÄ¸ßÊ ......

LinuxÉÏautofsÅäÖü°Æä˵Ã÷....

             °æȨÉùÃ÷£ºÔ­´´×÷Æ·£¬ÔÊÐíתÔØ£¬×ªÔØʱÇëÎñ±ØÒÔ³¬Á´½ÓÐÎʽ±êÃ÷ÎÄÕ ԭʼ³ö´¦ ¡¢×÷ÕßÐÅÏ¢ºÍ±¾ÉùÃ÷¡£·ñÔò½«×·¾¿·¨ÂÉÔðÈΡ£http://blog.csdn.net/Neverland2012  
         ÎÒÃǾ­³£»áÈ¥ÏÂÔرð ......

Linux´óʦ£¨¹Å³£¬Guru£©ÍƼöʲô£¿






<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
       ÔÚÏÖʵÉú»îÖб»ÈËÃdzÆΪ´óʦ¼¶µÄÈËÎïȷʵºÜÉÙ¼û¡£
Brian
Proffitt
ÏÈÉú¾ÍÊÇһλȫÇòÖªÃû¡¢ÊÜÈË×ð¾´µÄ
Linux
´óʦ¡£´ËÑÔÓкθù¾Ý£¿½üÈÕ£¬ËûÏòÎÒÃÇÍƼöÁËʲô£¿
 
   ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ