LinuxÉ豸Çý¶¯¿ª·¢Ïê½â ±Ê¼Ç3 LinuxÄں˼°Äں˱à³Ì
ÔÚÉ豸Çý¶¯·½Ã棬Linux2.6Ïà¶ÔÓÚLinux2.4ÓнϴóµÄ¸Ä¶¯£¬ÕâÖ÷Òª±íÏÖÔÚÄÚºËAPIÖÐÔö¼ÓÁ˲»ÉÙй¦ÄÜ£¨ÈçÄÚ´æ³Ø£©¡¢sysfsÎļþϵͳ¡¢ÄÚºËÄ£¿é´Ó.o±äΪ.ko¡¢Çý¶¯Ä£¿é±àÒ뷽ʽ¡¢Ä£¿éʹÓüÆÊý¡¢Ä£¿é¼ÓÔØºÍÐ¶ÔØº¯ÊýµÄ¶¨ÒåµÈ·½Ãæ
LinuxÄÚºËÖ÷ÒªÓнø³Ìµ÷¶È¡¢ÄÚ´æ¹ÜÀí¡¢ÐéÄâÎļþϵͳ¡¢ÍøÂç½Ó¿ÚºÍ½ø³Ì¼äͨÐŵÈ5¸ö×Óϵͳ×é³É£¬ÈçÏÂͼ£º
ÔÚÉ豸Çý¶¯±à³ÌÖУ¬µ±ÇëÇóµÄ×ÊÔ´²»ÄÜÂú×ãʱ£¬Çý¶¯Ò»°ã»áµ÷¶ÈÆäËûÏß³ÌÖ´ÐУ¬²¢Ê¹Çý¶¯¶ÔÓ¦µÄ½ø³Ì½øÈë˯Ãß״̬£¬Ö±µ½ËüÇëÇóµÄ×ÊÔ´±»ÊÍ·Å£¬²Å»á±»»½ÐѶø¼ÍÄîÈÕ¾ÍÐ÷״̬
ÔÚÉ豸Çý¶¯±à³ÌÖУ¬Èç¹ûÐèÒª¼¸¸ö²¢·¢Ö´ÐеÄÈÎÎñ£¬¿ÉÒÔÆô¶¯ÄÚºËỊ̈߳¬Æô¶¯ÄÚºËÏ̵߳ĺ¯ÊýΪ£ºint kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
LinuxÄÚ´æ¹ÜÀíÍê³ÉΪÿ¸ö½ø³Ì½øÐÐÐéÄâÄÚ´æµ½ÎïÀíÄÚ´æµÄת»»¡£Ò»°ã¶øÑÔ£¬LinuxµÄÿ¸ö½ø³ÌÏíÓÐ4GBµÄÄÚ´æ¿Õ¼ä£¬0-3GBÊôÓÚÓû§¿Õ¼ä£¬3-4GBÊôÓÚÄں˿ռ䣬Äں˿ռä¶Ô³£¹æÄÚ´æ¡¢I/OÉ豸ÄÚ´æÒÔ¼°¸ß¶ËÄÚ´æ´æÔÚ²»Í¬µÄ´¦Àí·½Ê½
ÐéÄâÎļþϵͳÒþ²ØÁ˸÷ÖÖÓ²¼þµÄ¾ßÌåϸ½Ú£¬ÎªËùÓеÄÉ豸ÌṩÁËͳһµÄ½Ó¿Ú¡£¶øÇÒ£¬Ëü¶ÀÁ¢ÓÚ¸÷¸ö¾ßÌåµÄÎļþϵͳ£¬ÊǶԸ÷ÖÖÎļþϵͳµÄÒ»¸ö³éÏó£¬ËüʹÓÃsuper block´æ·ÅÎļþϵͳÏà¹ØÐÅÏ¢£¬Ê¹ÓÃË÷Òý½Úµãinode´æ·ÅÎļþµÄÎïÀíÐÅÏ¢£¬Ê¹ÓÃĿ¼Ïîdentry´æ·ÅÎļþµÄÂß¼ÐÅÏ¢
LinuxϵͳֻÄÜͨ¹ýϵͳµ÷ÓúÍÓ²¼þÖжÏÍê³É´ÓÓû§¿Õ¼äµ½Äں˿ռäµÄ¿ØÖÆ×ªÒÆ
LinuxϵÄc±à³Ì
1¡¢Á㳤¶ÈÊý×é
GNU CÖÐÔÊÐíʹÓÃÁ㳤¶ÈµÄÊý×é¡£ËüÃÇ×÷Ϊ½á¹¹ÌåµÄ×îºóÒ»¸öÔªËØÊ®·ÖÓÐÓã¬ÔÚISO C89ÖУ¬ÄãÐèÒª¸øÄ¿Â¼·ÖÅ䳤¶È1,Òâζ×ÅÒªÀ˷ѿռä»òÕßʹmallocµÄ²ÎÊý±äµÃ¸´ÔÓ¡£ÔÚISO C99ÖУ¬Äã¿ÉÒÔʹÓÃÁé»îµÄÊý×éÔªËØ£¬Ö»ÊÇÔÚÓï·¨ºÍÖ÷ÒåÉÏÓÐ΢СµÄ²îÒì¡£
·Áé»îµÄÊý×éÔªËØÐ´Îªcontents[]²»´ø0¡£
·Áé»îµÄÊý×éÔªËØ¾ßÓв»ÍêÈ«µÄÀàÐÍ£¬ËùÒÔsizeof²Ù×÷Ò²Ðí²»Äܱ»Ó¦Óá£×÷ΪÁ㳤¶ÈÊý×éµÄÔʼʵÏֵįæ¹ÖÖ®´¦£¬sizeof±»¸³ÖµÎª0¡£
Áé»îµÄÊý×éÔªËØ¿ÉÒÔ×÷Ϊ½á¹¹ÌåµÄ×îºóÒ»¸öÔªËØ³öÏÖµ±ÆäËüÔªËØ·Ç¿Õʱ¡£GCCÏÖÔÚÔÚÈκεط½ÔÊÐíÁ㳤¶ÈÊý×é¡£¶¨Òå½öº¬ÓÐÒ»¸öÁ㳤¶ÈÊý×éµÄ½á¹¹Ìå,ÎÞÂÛÈçºÎ£¬Äã¿ÉÄÜ»áÓöµ½ÎÊÌâ¡£ÕâÑùµÄÓ÷¨±»·´¶Ô£¬ÎÒÃǽ¨Òé½öµ±Áé»îÊý×éÔªËØ±»ÔÊÐíµÄµØ·½Ê¹ÓÃÁ㳤¶ÈÊý×é¡£È磺
#include <stdio.h>
#include <string.h>
struct arr
{
int a;
char buff[0];
};
int main()
{
&nb
Ïà¹ØÎĵµ£º
1.ÔÚÏßÏÂÔØ£ºwget http://www.realvnc.com/dist/vnc-4.0-x86_linux.tar.gz
2.½âѹËõ£ºtar -zxvf vnc-4.0-x86_linux.tar.gz
¿ÉÒÔ¿´READMEÀïÄÚÈÝÀ´°²×°
3¡£½øÈëvncĿ¼Ï°²×°£º./vncinstall /usr/local/bin
4¡£mkdir -p /usr/local/vnc/classes
cp java/* /usr/local/vnc/classes
5¡£Æô¶¯vncserver
......
ÒÔ i2c-mpc.c Çý¶¯Ä£¿éΪÀý
fsl_i2c_init -> of_register_platform_driver -> of_register_driver -> driver_register -> bus_add_driver -> driver_attach
-> bus_for_each_dev -> __driver_attach -> driver_probe_device -> really_probe -> drv->probe(dev); ......
´Ówrite()µ÷Ó÷µ»ØÊ±£¬ÄÚºËÒѾ½«»º³åÇøËùÌṩµÄÊý¾Ýµ½Äں˵Ļº³åÇø£¬µ«ÊÇÎÞ·¨±£Ö¤Êý¾ÝÒѾд³öµ½ÆäÔ¤¶¨µÄÄ¿µÄµØ¡£µÄÈ·£¬Ð´Èëµ÷Ó÷µ»ØµÄËÙ¶ÈʵÔÚÌ«¿ìÁË£¬¿ÉÄÜûÓÐʱ¼äÍê³É¸ÃÏîÄ¿µÄ¹¤×÷¡£´¦ÀíÆ÷ºÍÓ²ÅÌÖ®¼äµÄÐÔÄܲîÒìʹµÃ´ËÀàÁîÈËÍ·Í´µÄÐÐΪÏÔ¶øÒ×¼û¡£
ÊÂʵÉÏ£¬Èç¹ûÓû§¿Õ¼äÓ¦ÓóÌÐò·¢³öwrite()ϵͳµ÷Óã¬LinuxÄں˻áÏȽøÐÐÈ ......