LinuxÄں˽â¶ÁÈëÃÅ
±¾ÎÄת×Ô£ºhttp://topic.csdn.net/u/20100108/11/5422B656-B9CD-49F5-AD7A-8DA0AE9304AB.html ×÷Õߣºlongqiaojiang
Õë¶ÔºÃ¶àLinux °®ºÃÕß¶ÔÄں˺ÜÓÐÐËȤȴÎÞ´ÓÏ¿ڣ¬±¾ÎÄÖ¼ÔÚ½éÉÜÒ»ÖÖ½â¶ÁlinuxÄÚºËÔ´ÂëµÄÈëÃÅ·½·¨£¬¶ø²»Êǽâ˵linux¸´ÔÓµÄÄں˻úÖÆ£» £¨²Î¿¼×ÊÁÏÀ´Ô´£º·ÉÁè http://www.witech.com.cn/£©
Ò»£®ºËÐÄÔ´³ÌÐòµÄÎļþ×éÖ¯£º
1£®LinuxºËÐÄÔ´³ÌÐòͨ³£¶¼°²×°ÔÚ/usr/src/linuxÏ£¬¶øÇÒËüÓÐÒ»¸ö·Ç³£¼òµ¥µÄ±àºÅÔ¼¶¨£ºÈκÎżÊýµÄºËÐÄ£¨ÀýÈç2.0.30£©¶¼ÊÇÒ»¸öÎȶ¨µØ·¢ÐеĺËÐÄ£¬¶øÈÎºÎÆæÊýµÄºËÐÄ£¨ÀýÈç2.1.42£©¶¼ÊÇÒ»¸ö¿ª·¢ÖеĺËÐÄ¡£
±¾ÎÄ»ùÓÚÎȶ¨µÄ2.2.5Ô´´úÂ룬µÚ¶þ²¿·ÖµÄʵÏÖÆ½Ì¨Îª Redhat Linux 6.0¡£
2£®ºËÐÄÔ´³ÌÐòµÄÎļþ°´Ê÷Ðνṹ½øÐÐ×éÖ¯£¬ÔÚÔ´³ÌÐòÊ÷µÄ×îÉϲãÄã»á¿´µ½ÕâÑùһЩĿ¼£º
¡ñArch £ºarch×ÓĿ¼°üÀ¨ÁËËùÓкÍÌåϵ½á¹¹Ïà¹ØµÄºËÐÄ´úÂë¡£ËüµÄÿһ¸ö×ÓĿ¼¶¼´ú±íÒ»ÖÖÖ§³ÖµÄÌåϵ½á¹¹£¬ÀýÈçi386¾ÍÊǹØÓÚintel cpu¼°ÓëÖ®Ïà¼æÈÝÌåϵ½á¹¹µÄ×ÓĿ¼¡£PC»úÒ»°ã¶¼»ùÓÚ´ËĿ¼£»
¡ñInclude: include×ÓĿ¼°üÀ¨±àÒëºËÐÄËùÐèÒªµÄ´ó²¿·ÖÍ·Îļþ¡£ÓëÆ½Ì¨Î޹صÄÍ·ÎļþÔÚ include/linux×ÓĿ¼Ï£¬Óë intel cpuÏà¹ØµÄÍ·ÎļþÔÚinclude/asm-i386×ÓĿ¼ÏÂ,¶øinclude/scsiĿ¼ÔòÊÇÓйØscsiÉ豸µÄÍ·ÎļþĿ¼£»
¡ñInit£º Õâ¸öĿ¼°üº¬ºËÐĵijõʼ»¯´úÂë(×¢£º²»ÊÇϵͳµÄÒýµ¼´úÂë)£¬°üº¬Á½¸öÎļþmain.cºÍVersion.c£¬ÕâÊÇÑо¿ºËÐÄÈçºÎ¹¤×÷µÄÒ»¸ö·Ç³£ºÃµÄÆðµã¡£
¡ñMm £ºÕâ¸öĿ¼°üÀ¨ËùÓжÀÁ¢ÓÚ cpu Ìåϵ½á¹¹µÄÄÚ´æ¹ÜÀí´úÂ룬Èçҳʽ´æ´¢¹ÜÀíÄÚ´æµÄ·ÖÅäºÍÊͷŵȣ»¶øºÍÌåϵ½á¹¹Ïà¹ØµÄÄÚ´æ¹ÜÀí´úÂëÔòλÓÚarch/*/mm/£¬ÀýÈçarch/i386/mm/Fault.c
¡ñKernel£ºÖ÷ÒªµÄºËÐÄ´úÂ룬´ËĿ¼ÏµÄÎļþʵÏÖÁË´ó¶àÊýlinuxϵͳµÄÄں˺¯Êý£¬ÆäÖÐ×îÖØÒªµÄÎļþµ±Êôsched.c£»Í¬Ñù£¬ºÍÌåϵ½á¹¹Ïà¹ØµÄ´úÂëÔÚarch/*/kernelÖУ»
¡ñDrivers£º ·ÅÖÃϵͳËùÓеÄÉ豸Çý¶¯³ÌÐò;ÿÖÖÇý¶¯³ÌÐòÓÖ¸÷Õ¼ÓÃÒ»¸ö×ÓĿ¼£ºÈ磬/block ÏÂΪ¿éÉ豸Çý¶¯³ÌÐò£¬±ÈÈçide£¨ide.c£©¡£Èç¹ûÄãÏ£Íû²é¿´ËùÓпÉÄܰüº¬ÎļþϵͳµÄÉ豸ÊÇÈçºÎ³õʼ»¯µÄ£¬Äã¿ÉÒÔ¿´drivers/block/genhd.cÖеÄdevice_setup()¡£Ëü²»½ö³õʼ»¯Ó²ÅÌ£¬Ò²³õʼ»¯ÍøÂ磬ÒòΪ°²×°nfsÎļþϵͳµÄʱºòÐèÒªÍøÂçÆäËû: Èç, Lib·ÅÖúËÐĵĿâ´úÂë; Net,ºËÐÄÓëÍøÂçÏà¹ØµÄ´úÂë; Ipc,Õâ¸öĿ¼°üº¬ºËÐĵĽø³Ì¼äͨѶµÄ´úÂë; Fs ,ËùÓеÄÎļþϵͳ´úÂëºÍ¸÷ÖÖÀàÐ͵ÄÎļþ²Ù×÷´úÂ룬ËüµÄÿһ¸ö×ÓĿ¼֧³ÖÒ»¸öÎļþϵͳ£¬ÀýÈçfatºÍext2;
scripts, ´ËĿ¼°üº¬ÓÃÓ
Ïà¹ØÎĵµ£º
ÏÂÃæµÄ´úÂë·ÖÎöÊǸù¾Ýlinux-2.6.17.14_stm22°æ±¾
#define STSYS_WriteRegDev32LE(Address_p, value) writel((u32)value, (void*)Address_p)
ÔÚinclude/asm-sh/io.h
#define writel(v,a) ({__raw_writel((v),(a));mb();})
#define __raw_write(v,a) __writ ......
#include<unistd.h>
¡¡¡¡¶¨Ò庯Êý£º
¡¡¡¡int execvp(const char *file ,char * const argv []);
¡¡¡¡º¯Êý˵Ã÷£º
¡¡¡¡execvp()»á´ÓPATH »·¾³±äÁ¿ËùÖ¸µÄĿ¼ÖвéÕÒ·ûºÏ²ÎÊýfile µÄÎļþÃû£¬ÕÒµ½ºó±ãÖ´ÐиÃÎļþ£¬È»ºó½«µÚ¶þ¸ö²ÎÊýargv´«¸ø¸ÃÓûÖ´ÐеÄÎļþ¡£
¡¡¡¡·µ»ØÖµ£º
¡¡¡¡Èç¹ûÖ´Ðгɹ¦Ôòº¯Êý²»»á·µ»Ø£¬Ö´ÐÐʧ°ÜÔ ......
¹ØÓÚread(...)·µ»ØÖµµÄÕýÈ·Åжϣºp30
File I/O µÄ read(...)º¯ÊýÓ÷¨£º
ÓÐÎÊÌâµÄ´úÂ룬ֻÅжϷµ»ØÖµÎª-1µÄÇé¿ö¡£
unsigned long word;
ssize_t nr;
/* read a couple bytes into 'word' from 'fd' */
nr = read (fd, &word, sizeof (unsigned long));
if (nr == -1)
/* error */
Indeed, a call to read( ) ca ......
·þÎñÆ÷£º
#include <stdio.h>
#include <sys/socket.h>
#include <unistd.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <time.h>
#define SERVER_PORT 20000 // define the defualt connect port id
#define LENGTH_OF_LISTEN_QU ......