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

linux 0.11 ÄÚºËѧϰ fcntl.c


/*
 *  linux/fs/fcntl.c
 *
 *  (C) 1991  Linus Torvalds
 */
#include <string.h>
#include <errno.h>
#include <linux/sched.h>
#include <linux/kernel.h>
#include <asm/segment.h>
#include <fcntl.h>
#include <sys/stat.h>
extern int sys_close(int fd);
/* ¸´ÖÆÎļþ¾ä±ú£¬²ÎÊýfdÊÇÖ¸Óë¸´ÖÆµÄÎļþ¾ä±ú£¬argÊÇÖ¸¶¨ÐÂÎļþµÄ¾ä±úµÄ×îСֵ */
static int dupfd(unsigned int fd, unsigned int arg)
{
// Èç¹ûÎļþ¾ä±úÖµ´óÓÚÒ»¸ö³ÌÐò×î¶à´ò¿ªÎļþÊýNR_OPEN£¬»òÕ߸þä±úµÄÎļþ½á¹¹²»´æÔÚ£¬Ôò³ö´í£¬
// ·µ»Ø³ö´íÂë²¢Í˳ö
if (fd >= NR_OPEN || !current->filp[fd])
return -EBADF;
// Èç¹ûÖ¸¶¨µÄоä±úÖµarg ´óÓÚ×î¶à´ò¿ªÎļþÊý£¬Ôò³ö´í
if (arg >= NR_OPEN)
return -EINVAL;
// ÔÚµ±Ç°½ø³ÌµÄÎļþ½á¹¹Ö¸ÕëÊý×éÖÐѰÕÒË÷ÒýºÅ´óÓÚµÈÓÚarg µ«»¹Ã»ÓÐʹÓõÄÏî
while (arg < NR_OPEN)
if (current->filp[arg])
arg++;
else
break;
// Èç¹ûÕÒµ½µÄоä±úÖµarg ´óÓÚ×î¶à´ò¿ªÎļþÊý£¬Ôò³ö´í
if (arg >= NR_OPEN)
return -EMFILE;
// ÔÚÔËÐÐexec()ÀຯÊýʱ²»¹Ø±Õ¸Ã¾ä±ú
current->close_on_exec &= ~(1<<arg);
// Áî¸ÃÎļþ½á¹¹Ö¸ÕëµÈÓÚÔ­¾ä±úfd µÄÖ¸Õ룬²¢½«ÎļþÒýÓüÆÊýÔö1
(current->filp[arg] = current->filp[fd])->f_count++;
return arg;
}
/* ¸´ÖÆÎļþ¾ä±úϵͳµ÷Óú¯Êý */
int sys_dup2(unsigned int oldfd, unsigned int newfd)
{
// Èô¾ä±únewfd ÒѾ­´ò¿ª£¬ÔòÊ×ÏȹرÕÖ®
sys_close(newfd);
// ¸´ÖƲ¢·µ»ØÐ¾ä±ú
return dupfd(oldfd,newfd);
}
/* ¸´ÖÆÎļþ¾ä±úϵͳµ÷Óú¯Êý¡£Ð¾ä±úµÄÖµÊǵ±Ç°×îСµÄδÓþä±ú */
int sys_dup(unsigned int fildes)
{
return dupfd(fildes,0);
}
/* Îļþ¿ØÖÆÏµÍ³µ÷Óú¯Êý */
int sys_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg)
{
struct file * filp;
// Èç¹ûÎļþ¾ä±úÖµ´óÓÚÒ»¸ö½ø³Ì×î¶à´ò¿ªÎļþÊýNR_OPEN£¬»òÕ߸þä±úµÄÎļþ½á¹¹Ö¸ÕëΪ¿Õ£¬Ôò³ö´í£¬
// ·µ»Ø³ö´íÂë²¢Í˳ö
if (fd >= NR_OPEN || !(filp = current->filp[fd]))
return -EBADF;
switch (cmd)
{
case F_DUPFD: // ¸´ÖÆÎļþ¾ä±ú
return dupfd(fd,arg);
case F_GETFD: // È¡Îļþ¾ä±úµÄÖ


Ïà¹ØÎĵµ£º

LinuxÎļþ´ò°ü½â°ü(tar with gzip & bzip2)

´ò°ü: tar [-j] | [-z] [cv] [-f tar°üÎļþ] Òª´òÈë°üµÄÔ´Îļþ
½â°ü: tar [-j] | [-z] [xv] [-f tar°üÎļþ] [-C Ö¸¶¨½â°üµÄĿ¼]
²é¿´: tar [-j] | [-z] [tv] [-f tar°üÎļþ]
³£ÓõĴò°üÑ¡Ïî:
Ñ¡Ïî
ÃèÊö
-c
½¨Á¢tar°üÎļþ
-t
²é¿´tar°üÎļþÖеÄÎļþÁбí
-x
½â¿ªtar°üÎļþ
-C path
Óë½â°üÑ¡Ïî(-x)ÅäºÏʹÓÃ,Ö¸¶¨ ......

linuxÏÂvncserverÅäÖÃÓëwinÏÂvnc¿Í»§¶Ë


linuxÏÂvncserverÅäÖÃÓëwinÏÂvnc¿Í»§¶Ë


8 Nov, 2008
 
¹ÜÀí&·þÎñ

< type="text/javascript"><!--
google_ad_client = "pub-7056129240767270";
/* 300x250, ´´½¨ÓÚ 09-2-13 */
google_ad_slot = "270491 ......

zz GDB¸ÅÊö£¨LINUXϵĸú×Ùµ÷ÊÔ£©


GDBÊÇGNU¿ªÔ´×éÖ¯·¢²¼µÄÒ»¸öÇ¿´óµÄUNIXϵijÌÐòµ÷ÊÔ¹¤¾ß¡£»òÐí£¬¸÷λ±È½Ïϲ»¶ÄÇÖÖͼÐΠ
½çÃæ·½Ê½µÄ£¬ÏñVC¡¢BCBµÈIDEµÄµ÷ÊÔ£¬µ«Èç¹ûÄãÊÇÔÚUNIXƽ̨ÏÂ×öÈí¼þ£¬Äã»á·¢ÏÖGDBÕâ¸ö 
µ÷ÊÔ¹¤¾ßÓбÈVC¡¢BCBµÄͼÐλ¯µ÷ÊÔÆ÷¸üÇ¿´óµÄ¹¦ÄÜ¡£Ëùν“´çÓÐËù³¤£¬³ßÓÐËù¶Ì”¾ÍÊÇÕâ 
¸öµÀÀí¡£ 
 
Ò» ......

linux 0.11 ÄÚºËѧϰ head.s


#
# Õâ¶Î´úÂë±»Á¬½Óµ½systemÄ£¿éµÄ×îÇ°Ãæ£¬ÕâÒ²ÊÇËüΪʲô³ÆÖ®Îªhead.sµÄÔ­Òò¡£
# ´ÓÕâÀ↑ʼÄÚºËÍêÈ«ÔËÐÐÔÚ±£»¤Ä£Ê½Ï¡£head.s²ÉÓõÄÊÇat&t¸ñʽµÄ
# »ã±à¡£×¢ÒâµÄÊÇ´úÂëÖеĸ³Öµ·½ÏòÊÇ´Ó×óµ½ÓÒ¡£

# Õâ¶Î³ÌÐòʵ¼ÊÉÏÊdzöÓÚÄÚ´æµÄ¾ø¶ÔµØÖ·0¿ªÊ¼´¦¡£Ê×ÏÈÊǼÓÔØ¸÷¸öÊý¾Ý¶Î¼Ä´æÆ÷¡£
# ÖØÐÂÉèÖÃÈ«¾ÖÃèÊö·û±íg ......

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 ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ