linuxÄÚºËÔ´ÂëÖг£¼ûºê¶¨Òå
1. gccµÄ__attribute__±àÒïÊôÐÔ
ÒªÁ˽âLinux Kernel´úÂëµÄ·Ö¶ÎÐÅÏ¢£¬ÐèÒªÁ˽âÒ»ÏÂgccµÄ__attribute__µÄ±àÒïÊôÐÔ£¬__attribute__Ö÷ÒªÓÃÓڸıäËùÉùÃ÷»ò¶¨ÒåµÄº¯Êý»òÊý¾ÝµÄÌØÐÔ£¬ËüÓкܶà×ÓÏÓÃÓڸıä×÷ÓöÔÏóµÄÌØÐÔ¡£±ÈÈç¶Ôº¯Êý£¬noline½«½ûÖ¹½øÐÐÄÚÁªÀ©Õ¹¡¢noreturn±íʾûÓзµ»ØÖµ¡¢pure±íÃ÷º¯Êý³ý·µ»ØÖµÍ⣬²»»áͨ¹ýÆäËü£¨ÈçÈ«¾Ö±äÁ¿¡¢Ö¸Õ룩¶Ôº¯ÊýÍⲿ²úÉúÈκÎÓ°Ïì¡£µ«ÕâÀïÎÒÃDZȽϸÐÐËȤµÄÊǶԴúÂë¶ÎÆð×÷ÓÃ×ÓÏîsection¡£
__attribute__µÄsection×ÓÏîµÄʹÓøñʽΪ£º
__attribute__((section("section_name")))
Æä×÷ÓÃÊǽ«×÷Óõĺ¯Êý»òÊý¾Ý·ÅÈëÖ¸¶¨ÃûΪ"section_name"ÊäÈë¶Î¡£
ÕâÀﻹҪעÒâÒ»ÏÂÁ½¸ö¸ÅÄÊäÈë¶ÎºÍÊä³ö¶Î
ÊäÈë¶ÎºÍÊä³ö¶ÎÊÇÏà¶ÔÓÚÒªÉú³É×îÖÕµÄelf»òbinaryʱµÄLink¹ý³Ì˵µÄ£¬Link¹ý³ÌµÄÊäÈë´ó¶¼ÊÇÓÉÔ´´úÂë±àÒïÉú³ÉµÄÄ¿±êÎļþ.o£¬ÄÇôÕâЩ.oÎļþÖаüº¬µÄ¶ÎÏà¶Ôlink¹ý³ÌÀ´Ëµ¾ÍÊÇÊäÈë¶Î£¬¶øLinkµÄÊä³öÒ»°ãÊÇ¿ÉÖ´ÐÐÎļþelf»ò¿âµÈ£¬ÕâЩÊä³öÎļþÖÐÒ²°üº¬ÓжΣ¬ÕâЩÊä³öÎļþÖеĶξͽÐ×öÊä³ö¶Î¡£ÊäÈë¶ÎºÍÊä³ö¶Î±¾À´Ã»ÓÐʲô±ØÈ»µÄÁªÏµ£¬ÊÇ»¥Ïà¶ÀÁ¢£¬Ö»ÊÇÔÚLink¹ý³ÌÖУ¬Link³ÌÐò»á¸ù¾ÝÒ»¶¨µÄ¹æÔò£¨ÕâЩ¹æÔòÆäʵÀ´Ô´ÓÚLink Script£©£¬½«²»Í¬µÄÊäÈë¶ÎÖØÐÂ×éºÏµ½²»Í¬µÄÊä³ö¶ÎÖУ¬¼´Ê¹ÊǶεÄÃû×Ö£¬ÊäÈë¶ÎºÍÊä³ö¶Î¿ÉÒÔÍêÈ«²»Í¬¡£
ÆäÓ÷¨¾ÙÀýÈçÏ£º
int var __attribute__((section(".xdata"))) = 0;
ÕâÑù¶¨ÒåµÄ±äÁ¿var½«±»·ÅÈëÃûΪ.xdataµÄÊäÈë¶Î£¬£¨×¢Ò⣺__attribute__ÕâÖÖÓ÷¨ÖеÄÀ¨ºÅºÃÏñºÜÑϸñ£¬ÕâÀïµÄ¼¸¸öÀ¨ºÅºÃÏóÒ»¸öÒ²²»ÄÜÉÙ¡££©
static int __attribute__((section(".xinit"))) functionA(void)
{
.....
}
Õâ¸öÀý×Ó½«Ê¹º¯ÊýfunctionA±»·ÅÈëÃû½Ð.xinitµÄÊäÈë¶Î¡£
ÐèÒª×Å֨עÒâµÄÊÇ£¬__attribute__µÄsectionÊôÐÔÖ»Ö¸¶¨¶ÔÏóµÄÊäÈë¶Î£¬Ëü²¢²»ÄÜÓ°ÏìËùÖ¸¶¨¶ÔÏó×îÖÕ»á·ÅÔÚ¿ÉÖ´ÐÐÎļþµÄʲô¶Î¡£
2. Linux KernelÔ´´úÂëÖÐÓë¶ÎÓйصÄÖØÒªºê¶¨Òå
£Á. ¹ØÓÚ__init¡¢__initdata¡¢__exit¡¢__exitdata¼°ÀàËÆµÄºê
´ò¿ªLinux KernelÔ´´úÂëÊ÷ÖеÄÎļþ£ºinclude/init.h£¬¿ÉÒÔ¿´µ½ÓÐÏÂÃæµÄºê¶¨Ò飺
#define __init __attribute__ ((__section__ (".init.text"))) __cold
#define __initdata __attribute__ (( __section__ (".init.data")))
#define __exitdata __attribute__ (( __section__ (".exit.data")))
#define __exit_call __attribute_used__ __attribute_
Ïà¹ØÎĵµ£º
fg¡¢bg¡¢jobs¡¢&¡¢ctrl + z¶¼ÊǸúϵͳÈÎÎñÓйصģ¬ËäÈ»ÏÖÔÚ»ù±¾Éϲ»ÔõôÐèÒªÓõ½ÕâЩÃüÁµ«Ñ§»áÁËÒ²ÊǺÜʵÓõÄ
Ò»¡£& ×î¾³£±»Óõ½
Õâ¸öÓÃÔÚÒ»¸öÃüÁîµÄ×îºó£¬¿ÉÒÔ°ÑÕâ¸öÃüÁî·Åµ½ºǫִ́ÐÐ
¶þ¡£ctrl + z
¿ÉÒÔ½«Ò»¸öÕýÔÚǰִ̨ÐеÄÃüÁî·Åµ½ºǫ́£¬²¢ÇÒÔÝÍ£
Èý¡£jobs
²é¿´µ±Ç°ÓжàÉÙÔÚºǫ́ÔËÐеÄÃüÁî
ËÄ¡£fg
½ ......
ѧ¹ý²Ù×÷ϵͳµÄÈËÖªµÀÓÐÒ»¸ö·Ç³£ÖøÃûµÄÎÊÌ⣺¶ÁÕߣдÕßÎÊÌâ¡£¶ÁÕߣдÕßÎÊÌâÊÇָϵͳµ±ÖеĵÄ×ÊÔ´ÔÚijһʱ¼äÀï¿ÉÒÔͬʱÔÊÐí¶à¸ö½ø³Ì¶Á£¬µ«Ö»ÔÊÐíÒ»¸ö½ø³Ìд¡£Õâ¸ö½ø³Ìͬ²½ÎÊÌâµÄ½â·¨ÓÐÐí¶àÖÖ£¬ÔÚwindowϵͳÀïÓû¥³â±äÁ¿À´½øÐнø³ÌµÄͬ²½¡£ÔÚLinuxÀïÓÐÁíÒ»ÖÖ·½·¨£¬ÄǾÍÊÇÎļþËø£¬ÎļþËøÀïµÄÎļþ²»µ¥µ¥Ö»Ö¸Æ½Ê±Ëù˵µÄÎļþËüÓ ......
ÏßÐÔ—ÎïÀíµØÖ·µÄת»»£¬¿É½«ÆäÒâÒåÀ©Õ¹ÎªÔÊÐí½«Ò»¸öÏßÐÔµØÖ·±ê¼ÇΪÎÞЧ£¬¶ø²»ÊÇʵ¼ÊµØ²úÉúÒ»¸öÎïÀíµØÖ·¡£ÓÐÁ½ÖÖÇé¿ö¿ÉÄÜʹҳ±»±ê¼ÇΪÎÞЧ£ºÆäÒ»ÊÇÏßÐÔµØÖ·ÊDzÙ×÷ϵͳ²»Ö§³ÖµÄµØÖ·£»Æä¶þÊÇÔÚÐéÄâ´æ´¢Æ÷ϵͳÖУ¬ÏßÐÔµØÖ·¶ÔÓ¦µÄÒ³´æ´¢ÔÚ´ÅÅÌÉÏ£¬¶ø²»ÊÇ´æ´¢ÔÚÎïÀí´æ´¢Æ÷ÖС£ÔÚǰһÖÖÇé¿öÏ£¬³ÌÐòÒò²úÉúÁËÎÞЧµØÖ·¶ø±ØÐë±»Ö ......
man¾ÍÊÇmanualµÄËõд£¬ÓÃÀ´²é¿´ÏµÍ³ÖÐ×Ô´øµÄ¸÷Öֲο¼Êֲᡣ
Ò»¡¢ËµÃ÷
1£¬ÊÖ²áÒ³·ÖΪºÃ¼¸¸ö²¿·Ö£¬ÈçÏÂËùʾ£º
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File fo ......
ip ÊǸöÃüÁ ip ÃüÁîµÄ¹¦Äܺܶ࣡»ù±¾ÉÏËüÕûºÏÁË ifconfig Óë route ÕâÁ½¸öÃüÁ²»¹ýip µÄ¹¦ÄܸüÇ¿´ó£¡ Èç¹ûÄúÓÐÐËȤµÄ»°£¬Çë×ÔÐÐ vi /sbin/ifup ¾ÍÖªµÀÕû¸ö ifup ¾ÍÊÇÀûÓà ip Õâ¸öÃüÁîÀ´ÊµÏֵġ£ÏÂÃæ½éÉÜÒ»ÏÂʹÓ÷½·¨
[root@linux ~]# ip [option] [¶¯×÷] [ÃüÁî]
²ÎÊý£º
option £ºÉ趨µÄ²ÎÊý£¬Ö÷ÒªÓУº
  ......