Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö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ÉϹ¹Öþ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 ѧϰ·½·¨ ѧºÃLinux

Èç¹ûÄã°®ºÃѧϰ֪ʶ£¬ÓÈÆäÊÇLinux²Ù×÷ϵͳ֪ʶ£¬Ëæ×ÅLinuxÓ¦ÓõÄÀ©Õ¹£¬Ðí¶àÅóÓÑ¿ªÊ¼½Ó´¥Linux£¬¿ÉÄã²»ÖªµÀÈ¥ÄÄÀïÕÒµ½ÕâЩ֪ʶ£¬À´ÕâÀÈÃÄã¸ü¼ÓÁ˽âLinuxѧϰ·½·¨¡£ÈÃÄãÈ«ÃæÕÆÎÕLinuxѧϰ·½·¨¡£
1£®Ñ§Ï°µÄÄ¿µÄ
¡¡¡¡Í¨¹ýLinuxµÄÑ§Ï°ÕÆÎÕUNIXµÄÄ¿µÄÏë±Ø²»Óöà˵ÁË£¬ÔÚÕâ¸öÍøÂçÈ˲ÅÉí¼Û±¶ÔöµÄÄê´ú£¬Ïë¿¿¼¼Êõ³Ô·¹ÓÖ²»ÏëÕÆÎÕÍ ......

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 erron³£Á¿

#define EPERM            1      /* Operation not permitted */
#define ENOENT           2      /* No such file or directory */
#define ESRCH&nbs ......

linuxÄÚºË lock free


//
ͬ²½ÎÊÌ⣺
¶Ô¹²ÏíÊý¾ÝµÄ·ÃÎÊ£¬ÐèҪͬ²½£¬»¥³â¡£
ÔÚÖжϣ¬ÇÀÕ¼£¬¶àCPU£¬¶àÏß³Ì »·¾³ÏÂÓÈÆäÖØÒª¡£
ͬ²½·ÖΪ: ×èÈûͬ²½£¬·Ç×èÈûͬ²½
×èÈûͬ²½ÓÐÐí¶àʵÏÖ·½Ê½ÁË£ºmutex, semaphore. ×èÈûͬ²½Ê¹Óò»µ±¾Í¿ÉÄÜÔì³ÉËÀËø£¬»îËø£¬ÓÅÏȼ¶·´×ª¡£
·Ç×èÈûͬ²½£º£¨ÏÖÔÚÁ÷ÐÐÈýÖÖ£©
wait free ºÜÄÑʵÏÖ£¬Ë¼ÏëÊDZ¾Ïß³ÌÓÐÏÞ²½¾Í ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ