½ñÌìÍê³ÉÁËǶÈëʽlinuxµÄµÚÒ»¸öÇý¶¯µÄ±àдºÍ²âÊÔ£¬ËäÈ»ÊǸö¼òµ¥µÄ³ÌÐò£¬µ«ÊÇÂéȸËäС£¬ÎåÔà¾ãÈ«£¬Ï£Íû¿ÉÒÔ¸ø¸Õ¿ªÊ¼½Ó´¥Çý¶¯±àдµÄÈËһЩÌáʾ£¬¹²Í¬½ø²½¡£
Ô´´úÂ룺
·ÖÎöÈçÏ£º
ÏÂÃæÊÇÎÒµÄÇý¶¯³ÌÐò£º
#include <linux/config.h>//ÅäÖÃÍ·Îļþ
#include <linux/kernel.h>//ÄÚºËÍ·Îļþ
#include <linux/sched.h>
#include <linux/timer.h>//ʱÖÓÍ·Îļþ
#include <linux/init.h>//Óû§¶¨ÒåÄ£¿é³õʼº¯ÊýÃûÐèÒýÓõÄÍ·Îļþ
#include <linux/module.h>//Ä£¿é¼ÓÔØµÄÍ·Îļþ
#include <asm/hardware.h>
#include <asm/arch/S3C2440.h> //Õâ¸öÊÇ2440µÄ¼Ä´æÆ÷Í·Îļþ£¬asm/srchÖ»ÊǸöÁ´½Ó
//ʵ¼Ê¸ù¾Ý×Ô¼ºµÄÇé¿ö²éÕÒ,Ò»°ãÊÇ../../linux2.*.*/include/asm/arch-s3c2440Àï ±àÒëÆ÷
//×Ô¼º»á²éѯÁ´½Ó,ÒÔǰ²»ÖªµÀ£¬ÕÒÁ˰ëÌì
// GPIO_LED DEVICE MAJOR
#define GPIO_LED_MAJOR 97 //¶¨ÒåÖ÷É豸ºÅ
//define LED STATUS Îҵİå×Ó LEDÔÚGPB0 ÓëGPB1 ´¦ ´ó¼Ò¸ù¾Ý×Ô¼ºÇé¿ö¸Ä
#define LED_ON 0 //¶¨ÒåLEDµÆµÄ״̬ ¿ª
#define LED_OFF 1 //
// -- ......
½ñÌìÍê³ÉÁËǶÈëʽlinuxµÄµÚÒ»¸öÇý¶¯µÄ±àдºÍ²âÊÔ£¬ËäÈ»ÊǸö¼òµ¥µÄ³ÌÐò£¬µ«ÊÇÂéȸËäС£¬ÎåÔà¾ãÈ«£¬Ï£Íû¿ÉÒÔ¸ø¸Õ¿ªÊ¼½Ó´¥Çý¶¯±àдµÄÈËһЩÌáʾ£¬¹²Í¬½ø²½¡£
Ô´´úÂ룺
·ÖÎöÈçÏ£º
ÏÂÃæÊÇÎÒµÄÇý¶¯³ÌÐò£º
#include <linux/config.h>//ÅäÖÃÍ·Îļþ
#include <linux/kernel.h>//ÄÚºËÍ·Îļþ
#include <linux/sched.h>
#include <linux/timer.h>//ʱÖÓÍ·Îļþ
#include <linux/init.h>//Óû§¶¨ÒåÄ£¿é³õʼº¯ÊýÃûÐèÒýÓõÄÍ·Îļþ
#include <linux/module.h>//Ä£¿é¼ÓÔØµÄÍ·Îļþ
#include <asm/hardware.h>
#include <asm/arch/S3C2440.h> //Õâ¸öÊÇ2440µÄ¼Ä´æÆ÷Í·Îļþ£¬asm/srchÖ»ÊǸöÁ´½Ó
//ʵ¼Ê¸ù¾Ý×Ô¼ºµÄÇé¿ö²éÕÒ,Ò»°ãÊÇ../../linux2.*.*/include/asm/arch-s3c2440Àï ±àÒëÆ÷
//×Ô¼º»á²éѯÁ´½Ó,ÒÔǰ²»ÖªµÀ£¬ÕÒÁ˰ëÌì
// GPIO_LED DEVICE MAJOR
#define GPIO_LED_MAJOR 97 //¶¨ÒåÖ÷É豸ºÅ
//define LED STATUS Îҵİå×Ó LEDÔÚGPB0 ÓëGPB1 ´¦ ´ó¼Ò¸ù¾Ý×Ô¼ºÇé¿ö¸Ä
#define LED_ON 0 //¶¨ÒåLEDµÆµÄ״̬ ¿ª
#define LED_OFF 1 //
// -- ......
±àдÇý¶¯³ÌÐò£¬Ê×ÏÈÒªÁ˽âÊÇʲôÀàÐ͵ÄÉ豸¡£linuxϵÄÉ豸·ÖΪÈýÀ࣬·Ö±ðΪ£º×Ö·ûÉ豸£¬¿éÉ豸ºÍÍøÂçÉ豸¡£×Ö·ûÉ豸ÀàÐÍÊǸù¾ÝÊÇ·ñÒÔ×Ö·ûÁ÷ΪÊý¾ÝµÄ½»»»·½Ê½£¬´ó²¿·ÖÉ豸¶¼ÊÇ×Ö·ûÉ豸£¬Èç¼üÅÌ£¬´®¿ÚµÈ£¬¿éÉ豸ÔòÊÇÒÔ¿éΪµ¥Î»½øÐйÜÀíµÄÉ豸£¬È磬´ÅÅÌ¡£ÍøÂçÉ豸¾ÍÊÇÍø¿¨µÈ¡£
Æä´ÎÒªÁ˽âÓ¦ÓóÌÐòºÍÇý¶¯³ÌÐòµÄÇø±ð£¬Á½ÕßµÄÖ÷񻂿±ð·ÖΪÒÔÏÂÈýµã£º
1Èë¿Úº¯ÊýµÄÈÎÎñ²»Ïàͬ£¬Ó¦ÓóÌÐòÍê³ÉÒ»¸öÈÎÎñ£¬Çý¶¯Ö»Íê³É³õʼ»¯¹¤×÷£¬±ÈÈçÖжÏ
ÉêÇ룬¼Ä´æÆ÷ÉèÖ㬶¨Ê±Æ÷ÉèÖá£
2ÔËÐÐʱµÄcpuģʽ²»Ïàͬ£¬Çý¶¯¾ßÓкܸߵÄȨÏÞ£¬Ó¦ÓóÌÐòÊÇÔÚÓû§Ì¬ÏÂÔËÐУ¬¶øÇý
¶¯³ÌÐòÊÇÔÚÄÚºË̬ÏÂÖ´ÐС£
3 Çý¶¯³ÌÐò²»Äܵ÷ÓÃC¿âº¯Êý£¬ÄÚºËΪÇý¶¯³ÌÐòÌṩһЩº¯Êý¡£Èçprintk(KERN_NOTICE fmt, ##arg)£¬µÚÒ»¸ö²ÎÊýΪ´òÓ¡¼¶±ð£¬ÓÐÈçϵĴòÓ¡¼¶±ð£º
KERN_EMERG ÓÃÓÚ½ô¼±Ê¼þ,Ò»°ãÊÇϵͳ±ÀÀ£Ç°µÄÌáʾÐÅÏ¢
KERN_ALERT ÓÃÓÚÐèÒªÁ¢¼´²ÉÈ¡¶¯×÷µÄ³¡ºÏ
KERN_CRIT ÁÙ½ç״̬,ͨ³£Éè¼ÆÑéÖ¤µÄÓ²¼þ»òÈí¼þ²Ù×÷ʧ°Ü
KERN_ERR ÓÃÓÚ±¨¸æ´íÎó״̬.É豸Çý¶¯³ÌÐòͨ³£»áÓÃËü±¨¸æÀ´×ÔÓ²¼þµÄÎÊÌâ
KERN_WARNING ¾Í¿ÉÄܳöÏÖµÄÎÊÌâÌá³ö¾¯¸æ.ÕâЩÎÊÌâͨ³£²»»á¶Ôϵͳ ......
ÈçºÎ²éѯrpmÀïµÄÏà¹ØµÄÐÅÏ¢ 1. ²éѯÒѾ°²×°ÔÚlinuxÖеÄÈí¼þÐèҪעÒâµÄ¼¸¸ö²ÎÊý£º
1. ²éѯÒѾ°²×°ÔÚlinuxÖеÄÈí¼þ
ÐèҪעÒâµÄ¼¸¸ö²ÎÊý£º
rpm –qa //²éѯlinuxϵͳÉÏÒѾ°²×°ÁËÄÇЩÈí¼þ £¬´ËʱµÄ²éѯ×îºÃʹÓÃ
rpm –qa |more
rpm –qf filename //¼ì²éÕâ¸öÎļþÊÇÔÚÄǸöÈí¼þÖа²×°µÄ
[root@localhost Server]# rpm -qf /etc/httpd/conf/httpd.conf
httpd-2.2.3-6.el5
rpm –qi package_name //¿ÉÒÔÏÔʾÕâ¸öÈí¼þµÄÏà¹ØÐÅÏ¢ Õâ¸öµØ·½ÊÇÈí¼þÃû³Æ
[root@localhost Server]# rpm -qi httpd
Name : httpd Relocations: (not relocatable)
Version : 2.2.3 Vendor: Red Hat, Inc.
Release : 6.el5 ......
¡¡¡¡1¡¢½éÉÜ£º
¡¡¡¡ ´ó²¿·ÖµÄ Linux ϵͳÖж¼ÒªÊ¹Óà syslog ¹¤¾ß£¬ËüÊÇÏ൱Áé»îµÄ£¬ÄÜʹϵͳ¸ù¾Ý²»Í¬ÈÕÖ¾ÊäÈëÏî²ÉÈ¡²»Í¬µÄ»î¶¯¡£syslog ¹¤¾ßÓÉÒ»¸öÊØ»¤³ÌÐò×é³É¡£ËüÄܽÓÊÜ·ÃÎÊϵͳµÄÈÕÖ¾ÐÅÏ¢²¢ÇÒ¸ù¾Ý /etc/syslog.conf ÅäÖÃÎļþÖеÄÖ¸Áî´¦ÀíÕâЩÐÅÏ¢¡£³ÌÐò£¬ÊØ»¤½ø³ÌºÍÄÚºËÌṩÁË·ÃÎÊϵͳµÄÈÕÖ¾ÐÅÏ¢¡£Òò´Ë£¬ÈκÎÏ£ÍûÉú³ÉÈÕÖ¾ÐÅÏ¢µÄ³ÌÐò¶¼¿ÉÒÔÏò syslog ½Ó¿Úºô½ÐÉú³É¸ÃÐÅÏ¢¡£Í¨³££¬syslog ½ÓÊÜÀ´×ÔϵͳµÄ¸÷ÖÖ¹¦ÄܵÄÐÅÏ¢£¬Ã¿¸öÐÅÏ¢¶¼°üÀ¨ÖØÒª¼¶¡£/etc/syslog.conf Îļþ֪ͨ syslogd ÈçºÎ¸ù¾ÝÉ豸ºÍÐÅÏ¢ÖØÒª¼¶±ðÀ´±¨¸æÐÅÏ¢¡£
¡¡¡¡
¡¡¡¡2¡¢/etc/syslog.conf
¡¡¡¡/etc/syslog.confÎļþʹÓÃÏÂÃæµÄÐÎʽ:
¡¡¡¡facility.level action
¡¡¡¡ facility Ö¸¶¨ syslog ¹¦ÄÜ£¬Ö÷Òª°üÀ¨ÒÔÏÂÕâЩ£º
¡¡¡¡
¡¡¡¡auth ÓÉ pam_pwdb ±¨¸æµÄÈÏÖ¤»î¶¯¡£
¡¡¡¡authpriv °üÀ¨ÌØÈ¨ÐÅÏ¢ÈçÓû§ÃûÔÚÄÚµÄÈÏÖ¤»î¶¯
¡¡¡¡cron Óë cron ºÍ at ÓйصÄÐÅÏ¢¡£
¡¡¡¡daemon Óë inetd ÊØ»¤½ø³ÌÓйصÄÐÅÏ¢¡£
¡¡¡¡kern ÄÚºËÐÅÏ¢£¬Ê×ÏÈͨ¹ý klogd ´«µÝ¡£
¡¡¡¡lpr Óë´òÓ¡·þÎñÓйصÄÐÅÏ¢¡£
¡¡¡¡mail Óëµç×ÓÓʼþÓйصÄÐÅÏ¢
¡¡¡¡mark syslog ÄÚ²¿¹¦ÄÜÓÃÓÚÉú³Éʱ¼ä´Á
¡¡¡¡news À´×ÔÐÂÎÅ·þÎñÆ÷µÄÐÅÏ¢
¡¡¡¡syslog ......
Linux
Ô×Ó²Ù×÷µÄ·ÖÎö
±¾ÎÄÕë¶ÔLinuxÌṩµÄÔ×Ó²Ù×÷º¯Êý
atomic_dec_and_test
×öÁËÏêϸµÄʵÀý·ÖÎö£¬½âÊÍÁËÆäÔ×ÓÐԵı¾ÖÊÒâÒå¡£
²¢¶Ô
volatile
²úÉúµÄÎó½â×öÁ˽âÊÍ¡£
1.
atomic_dec_and_test
·ÖÎö
£¨
1
£©ÏÈÀ´¿´
atomic_dec_and_test
µÄ¶¨Ò壺
11 #ifdef CONFIG_SMP
12 #define LOCK "lock ; "
13 #else
14 #define LOCK ""
15 #endif
137 static __inline__ int atomic_dec_and_test(atomic_t
_
v)
138 {
139 unsigned char c;
140
141 __asm__ __volatile__(
142 LOCK "decl %0; sete %1"
143 :"=m" (v->counter), "=qm" (c)
144 :"m" (v->counter) : "memory");
145 return c !
=
0;
146 }
11–15 this macro is used in the inline assembly part of
some of the functions that follow. It means that
the LOCK macro can always be used. But sometimes (the SMP
case) it invokes the machine
instruction to lock the bus; other times it has no
effect.
142 the SETE ......
Ò»¡¢¸ÅÊö
¡¡¡¡LinuxÖ§³ÖÊýÁ¿ÖÚ¶àµÄ±¾µØÎļþϵͳÀàÐͺͼ¸ÖÖͨ¹ýÍøÂç·ÃÎÊÔ¶³Ì´ÅÅ̵ÄÎļþ
ϵͳ£¬·ÖÎö/proc/filesystemsÎļþµÄÄÚÈݼ´¿ÉÕÒ³öµ±Ç°LinuxÄÚºËÌṩÁ˶ÔÄÄЩÎÄ
¼þϵͳµÄÖ§³Ö¡£
¡¡¡¡ÒªÔÚÄÚºËÖÐÔö¼Ó¶ÔÈÎÒâ´ËÀàÎļþϵͳµÄÖ§³Ö¶¼ÊÇÏ൱¼òµ¥µÄ£¬Ö»ÐèÔÚ¹¹ÔìеÄ
ÄÚºËʱѡÖÐÏàÓ¦µÄÅäÖÃÑ¡Ïî¼´¿É¡£ÀýÈ磬¶ÔÓÚmakexconfigÀ´Ëµ£¬Ö»ÐèÔÚËüµÄ
FilesystemsÏÂÃæÑ¡ÖÐÏëÒªµÄÎļþϵͳÀàÐÍ¡£Èç¹ûÄãÊÇΪÁË´ÓÆäËû»·¾³½«´ÅÅÌÒÆÈë
Linuxϵͳ²ÅÐèÒªÔö¼ÓÎļþϵͳÀàÐÍ£¬¶øÇҸôÅÅÌÔÏȵÄϵͳ»·¾³Ê¹ÓÃÓëLinux²»Í¬
µÄ·ÖÇø±í¸ñʽ£¬ÔòÓ¦µ±¼Çס»¹±ØÐëÆôÓÃÏàÓ¦µÄ·ÖÇøÀàÐÍÖ§³Ö£¨Í¨¹ýPartition
TypesÉèÖã©¡£
¡¡¡¡µ±Ç°£¬ext2Îļþϵͳ£¨¼´second extended filesystem£©ÊÇLinuxĬÈÏÖ±½ÓÖ§
³ÖµÄÎļþϵͳ¡£ext2ÎļþϵͳºÍÆäËûÏÖ´úUnixʹÓõÄÎļþϵͳ·Ç³£ÏàËÆ£¬µ«¸ü½Ó½ü
ÓÚBSDϵͳËùÓõÄBerkeley Fast Filesystem¡£ext2ÎļþϵͳµÄ×î´óÈÝÁ¿ÊÇ4 TB£¬
µ«Ä¿Ç°ËüµÄ×î´óÎļþ´óС±»LinuxÄÚºËÏÞÖÆÎª2 GB¡£
¡¡¡¡ext2µÄºËÐÄÊÇÁ½¸öÄÚ²¿Êý¾Ý½á¹¹£¬¼´superblockºÍinode¡£superblockÊÇÒ»¸ö
°üº¬ÎļþÏµÍ³ÖØÒªÐÅÏ¢µÄ±í¸ñ£¬±ÈÈç±êÇ©¡¢´óС¡¢inodeµÄÊýÁ¿µÈ£¬ËüÊǶÔÎļþϵ
ͳ½á¹¹µÄ»ù´¡ÐԵġ¢È«¾ÖÐÔµÄÃèÊö¡£Òò´ ......