青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Keep Sunny
Just For Fun
    的確,和真正的程序員相比,我差得太遠(yuǎn),但和同齡人,同水平的人來(lái)說(shuō),我還能算點(diǎn)什么的..

    如果不是有感來(lái)研究Linux的源碼,肯定不會(huì)發(fā)現(xiàn)...原來(lái),竟有這么漂亮的函數(shù)定義方式.


#define _syscall0(type,name) \
type name(
void) \
{ \
type __res; \
__asm__ 
volatile ("int $0x80" \
    : 
"=a" (__res) \
    : 
"0" (__NR_##name)); \
if (__res >= 0) \
    
return __res; \
errno 
= -__res; \
return -1; \
}

#define _syscall1(type,name,atype,a) \
type name(atype a) \
{ \
type __res; \
__asm__ 
volatile ("int $0x80" \
    : 
"=a" (__res) \
    : 
"0" (__NR_##name),"b" (a)); \
if (__res >= 0) \
    
return __res; \
errno 
= -__res; \
return -1; \
}

#define _syscall2(type,name,atype,a,btype,b) \
type name(atype a,btype b) \
{ \
type __res; \
__asm__ 
volatile ("int $0x80" \
    : 
"=a" (__res) \
    : 
"0" (__NR_##name),"b" (a),"c" (b)); \
if (__res >= 0) \
    
return __res; \
errno 
= -__res; \
return -1; \
}

#define _syscall3(type,name,atype,a,btype,b,ctype,c) \
type name(atype a,btype b,ctype c) \
{ \
type __res; \
__asm__ 
volatile ("int $0x80" \
    : 
"=a" (__res) \
    : 
"0" (__NR_##name),"b" (a),"c" (b),"d" (c)); \
if (__res<0) \
    errno
=-__res , __res = -1; \
return __res;\
}

    如果能讀懂的話,應(yīng)該理解是什么意思.在unistd.h文件中這幾行代碼,竟將67個(gè)系統(tǒng)函數(shù)給概括了(Linux0.01為67,0.95增加為89.)..

    我沒(méi)見(jiàn)過(guò)多少比這更精簡(jiǎn)的代碼,我只能說(shuō),我的感覺(jué),這不能是一般的漂亮,而是精簡(jiǎn)到極致的華麗..

    ....打心底佩服Linus大俠!!


posted on 2009-06-13 12:46 Kim Leo 閱讀(990) 評(píng)論(3)  編輯 收藏 引用
Comments
  • # re: 精簡(jiǎn)的華麗--讀 Linux0.01 syscall系列函數(shù)有感!
    唐風(fēng)
    Posted @ 2009-06-14 21:28
    確實(shí)是很精巧!!
    嗯,看來(lái)多讀讀高手寫(xiě)的代碼還是很有裨益的。

    不過(guò)坦白地講,我個(gè)人更欣賞用C++模板來(lái)實(shí)現(xiàn)這類(lèi)似的效果(只在必要的時(shí)候輔之以宏,比如要實(shí)現(xiàn)(__NR_##name)或是換函數(shù)名之類(lèi)的效果)。

    在Boost::lambda中也有類(lèi)似的技巧,不過(guò)是宏加模板來(lái)完成。
    一般來(lái)講,泛化類(lèi)型時(shí)用模板,而要修改字符以生成不同的函數(shù)時(shí),再加點(diǎn)宏的技巧。
    上面的你舉的例子小改下:
    #define _syscall1(ResType, functionName, a) \ 
    template 
    <typename Arg>                     \ 
    ResType functionName(Arg a)                 \ 
    {                                           \ 
        ResType __res;                          \ 
        __asm__ 
    volatile ("int $0x80"           \ 
            : 
    "=a" (__res)                      \ 
            : 
    "0" (__NR_##functionName),"b"(a));\ 
        
    if (__res >= 0)                         \ 
        
    return __res;                           \ 
        errno 
    = -__res;                         \ 
        
    return -1;                              \ 
    }
     

    當(dāng)然,Linux內(nèi)核是不用C++的,所以宏是唯一的選擇了~~~
      回復(fù)  更多評(píng)論   
  • # re: 精簡(jiǎn)的華麗--讀 Linux0.01 syscall系列函數(shù)有感!
    KPSN
    Posted @ 2009-06-18 15:50
    @唐風(fēng)
    ...貌似不錯(cuò)..
      回復(fù)  更多評(píng)論   
  • # re: 精簡(jiǎn)的華麗--讀 Linux0.01 syscall系列函數(shù)有感!
    chen3feng
    Posted @ 2010-03-08 15:08
    別佩服 Linus,syscall 4.4BSD 里就開(kāi)始這么搞了。  回復(fù)  更多評(píng)論   

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产一区二区欧美日韩| 欧美激情综合在线| 狠狠色丁香婷婷综合久久片| 亚洲视频网在线直播| 宅男噜噜噜66一区二区66| 欧美日韩免费高清| 午夜精品一区二区三区四区| 欧美成人激情视频| 一本色道久久88亚洲综合88| 国产精品一区二区久久国产| 久久五月天婷婷| 一本一本a久久| 欧美国产亚洲另类动漫| 亚洲一区二区三区视频播放| 一区二区三区我不卡| 欧美日韩国产不卡在线看| 性刺激综合网| 美国成人直播| 久久久久国产精品一区| 久久久综合香蕉尹人综合网| 欧美在线www| 美日韩在线观看| 午夜国产精品视频免费体验区| 一区二区三区在线看| 亚洲激情婷婷| 最新亚洲激情| 亚洲经典自拍| 欧美影院久久久| 亚洲免费视频成人| 亚洲私人黄色宅男| 一区二区三区精品久久久| 欧美亚洲日本国产| 亚洲欧美日韩一区二区| 玖玖玖国产精品| 欧美成人在线免费视频| 久久亚洲一区二区| 久久久精品一区| 久久av二区| 久久久久久久一区二区三区| 亚洲国产成人av好男人在线观看| 性欧美18~19sex高清播放| 久久人人九九| 国产色爱av资源综合区| 国产一区二区三区久久悠悠色av| 亚洲精品在线免费观看视频| 亚洲福利视频免费观看| 亚洲国产成人在线视频| 亚洲欧美日韩在线一区| 亚洲高清二区| 麻豆成人精品| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲欧美日韩专区| 日韩小视频在线观看专区| 亚洲精品在线看| 99精品国产热久久91蜜凸| 亚洲永久在线观看| 久久精品30| 欧美精品激情| 亚洲黑丝在线| 欧美高清视频一二三区| 久久在线播放| 欧美三区在线视频| 国产欧美精品一区| 亚洲精品国产精品国自产观看 | 国产精品99久久久久久久久 | 亚洲永久精品国产| 国产精品国产三级国产a| 国产日韩一区| 久久成人精品无人区| 午夜视频一区二区| 国产在线视频欧美| 米奇777超碰欧美日韩亚洲| 国产自产女人91一区在线观看| 亚洲欧美日韩国产| 亚洲自拍偷拍麻豆| 欧美黑人在线观看| 国产午夜精品在线观看| 校园激情久久| 欧美一二三区在线观看| 欧美chengren| 国产精品一区久久久| 欧美伊人久久| 久久精品国产一区二区三| 欧美午夜激情在线| 亚洲肉体裸体xxxx137| 亚洲国产欧美在线| 久久精品网址| 亚洲人www| 亚洲深夜福利在线| 一区在线播放| 99在线精品观看| 国产亚洲欧美另类中文| 欧美国产极速在线| 国产精品久久久久久久久婷婷| 亚洲日本va在线观看| 亚洲精品欧美专区| 国产在线国偷精品产拍免费yy| 欧美多人爱爱视频网站| 欧美视频免费在线观看| 麻豆精品91| 国产精品国内视频| 欧美**字幕| 国产精品日本精品| 欧美在线播放视频| 麻豆精品视频| 久久精品91| 久久精品国产亚洲a| 99国内精品久久| 亚洲欧洲日本在线| 欧美日韩国产综合一区二区| 久久成人国产精品| 欧美视频1区| 亚洲人成亚洲人成在线观看| 欧美激情一区二区久久久| 欧美中文在线视频| 欧美日韩精品在线观看| 久久婷婷国产麻豆91天堂| 99re66热这里只有精品4| 国产亚洲欧美日韩美女| 一区二区不卡在线视频 午夜欧美不卡' | 亚洲成人在线视频播放 | 中日韩高清电影网| 久久久亚洲精品一区二区三区| 亚洲女同同性videoxma| 欧美精品成人一区二区在线观看 | 欧美日韩视频在线一区二区观看视频| 久久激情视频免费观看| 国产精品盗摄久久久| 91久久精品视频| 亚洲第一网站免费视频| 欧美高清自拍一区| 国产欧美日韩综合一区在线播放| 91久久夜色精品国产九色| 在线免费观看日韩欧美| 久久久久国产精品www | 久久国产天堂福利天堂| 欧美视频一区二区三区四区| 亚洲片区在线| 一区二区三区国产在线观看| 欧美精品久久久久久久| 亚洲精品1区| 99v久久综合狠狠综合久久| 欧美国产日韩a欧美在线观看| 欧美成人精品1314www| 亚洲国产精品成人va在线观看| 久久婷婷国产麻豆91天堂| 美日韩免费视频| 亚洲精品久久久久中文字幕欢迎你| 久久综合伊人| 最新日韩av| 亚洲欧美视频在线观看视频| 国产精品第三页| 性欧美videos另类喷潮| 六月婷婷一区| 亚洲精品永久免费| 欧美涩涩网站| 欧美在线观看一二区| 欧美www视频在线观看| 夜夜嗨av一区二区三区中文字幕| 国产精品多人| 久久婷婷麻豆| 在线午夜精品| 欧美h视频在线| 亚洲一区日韩在线| 欧美77777| 亚洲美女在线国产| 久久国产主播| 亚洲美女色禁图| 国产精品自在在线| 欧美99久久| 亚洲欧美视频| 亚洲欧美日韩国产| 国内外成人免费激情在线视频网站 | 欧美与欧洲交xxxx免费观看| 狠狠色香婷婷久久亚洲精品| 欧美电影在线观看完整版| 久久综合九色99| 99综合视频| 黄色成人91| 欧美性猛交xxxx乱大交退制版| 欧美在线关看| 在线亚洲精品福利网址导航| 欧美成人影音| 国内视频一区| 欧美日韩精品一区| 久久久久欧美精品| 中文一区二区| 亚洲日本成人女熟在线观看| 久久精品国产99国产精品| 亚洲视频欧洲视频| 亚洲美女91| 亚洲激情影院| 黄色一区二区三区四区| 欧美性理论片在线观看片免费| 免费观看久久久4p| 久久久www成人免费无遮挡大片| 亚洲桃色在线一区| 欧美在线视频网站| 一区二区三区国产精品| 亚洲国产精品一区二区第一页 |