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

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

    如果不是有感來研究Linux的源碼,肯定不會(huì)發(fā)現(xiàn)...原來,竟有這么漂亮的函數(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.)..

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

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


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

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

    在Boost::lambda中也有類似的技巧,不過是宏加模板來完成。
    一般來講,泛化類型時(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 里就開始這么搞了。  回復(fù)  更多評(píng)論   

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   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>
            亚洲视频1区2区| 午夜天堂精品久久久久| 久久精品系列| 国内揄拍国内精品久久| 久久综合九色综合欧美就去吻| 亚洲欧美日本精品| 国产一区二区三区视频在线观看| 久久国产欧美| 久久女同精品一区二区| 亚洲人成网在线播放| 91久久视频| 欧美片在线观看| 亚洲一区二区三区精品动漫| 亚洲欧美激情四射在线日| 国产日产精品一区二区三区四区的观看方式| 欧美有码在线视频| 久久久久在线观看| 亚洲精品你懂的| 亚洲视频导航| 一区二区在线观看av| 亚洲国产欧美一区| 欧美性猛交xxxx乱大交退制版| 午夜精品亚洲| 麻豆精品国产91久久久久久| 在线亚洲成人| 久久精品夜色噜噜亚洲a∨| 亚洲精品麻豆| 欧美亚洲三区| 99精品国产99久久久久久福利| 亚洲欧美日韩综合aⅴ视频| 亚洲国产精品传媒在线观看| 亚洲一区二区三区精品视频 | 亚洲福利视频专区| 欧美日韩亚洲系列| 久久一综合视频| 欧美日韩在线一二三| 久久久亚洲高清| 欧美视频在线观看| 欧美成人在线免费观看| 国产精品午夜在线| 91久久久在线| 激情五月婷婷综合| 亚洲视频图片小说| 日韩视频一区二区三区在线播放免费观看| 亚洲免费一在线| 一区二区三区高清在线| 老司机午夜精品视频| 小辣椒精品导航| 欧美天天在线| 亚洲人成啪啪网站| 亚洲国产精品电影在线观看| 亚洲欧美日韩国产一区二区| 一区二区三区四区五区精品| 老司机67194精品线观看| 午夜精品久久久久| 欧美日韩天堂| 亚洲日本视频| 亚洲精品一区二区三区婷婷月| 久久国产精品亚洲77777| 午夜国产精品视频免费体验区| 欧美精品一区二区三区蜜桃| 亚洲第一黄色网| 伊人婷婷欧美激情| 久久精品二区三区| 久久精品1区| 国产欧美精品| 欧美一级大片在线观看| 亚洲欧美日韩国产精品| 欧美三级在线| 99国产精品久久久| 一本综合精品| 欧美日韩裸体免费视频| 99视频有精品| 午夜精品久久久久久久久| 欧美日韩一区二区三区视频| 亚洲美女性视频| 亚洲一二三级电影| 国产精品国产三级国产普通话蜜臀 | 亚洲欧美变态国产另类| 欧美日韩成人综合在线一区二区| 亚洲激情国产精品| 亚洲天堂成人在线视频| 国产精品福利在线观看| 夜久久久久久| 欧美在线视频网站| 国语精品中文字幕| 麻豆精品视频在线| 亚洲日本视频| 午夜视频久久久| 国产专区精品视频| 久久综合一区二区三区| 亚洲黄色一区| 亚洲欧美综合精品久久成人| 国产亚洲一二三区| 欧美肥婆在线| 亚洲欧美久久久| 免费欧美高清视频| 一本色道久久88综合日韩精品| 国产精自产拍久久久久久| 欧美一级免费视频| 欧美大片在线观看一区二区| 亚洲永久免费观看| 1000部国产精品成人观看| 欧美极品在线视频| 午夜视频久久久久久| 亚洲国产精品久久久久秋霞不卡| 亚洲天堂久久| 伊人精品久久久久7777| 欧美三级第一页| 久久久一区二区| 在线亚洲+欧美+日本专区| 久热re这里精品视频在线6| 99伊人成综合| 黄色一区二区三区四区| 欧美激情精品久久久久久大尺度 | 欧美激情精品久久久久久变态| 亚洲一区二区三区在线播放| 亚洲高清久久久| 久久精品亚洲| 亚洲一区激情| 亚洲人永久免费| 在线观看一区| 国产午夜精品全部视频在线播放| 欧美绝品在线观看成人午夜影视| 欧美在线啊v| 亚洲午夜av| 亚洲免费av电影| 亚洲国产日韩欧美一区二区三区| 久久精品中文字幕一区| 在线综合亚洲欧美在线视频| 亚洲精品综合精品自拍| 国模吧视频一区| 国产精品另类一区| 欧美日韩一区二区欧美激情| 狼人天天伊人久久| 久久av一区二区三区亚洲| 一本色道88久久加勒比精品| 欧美激情中文不卡| 麻豆精品一区二区av白丝在线| 欧美一级播放| 亚洲欧美在线观看| 亚洲伊人第一页| 一区二区三区四区精品| 亚洲免费精彩视频| 最新日韩av| 亚洲福利专区| 亚洲精品久久久久久下一站| 亚洲国产精品一区二区第四页av| 国内外成人在线| 狠狠爱www人成狠狠爱综合网| 国产一区二区久久| 国产在线观看91精品一区| 国产伦精品一区| 国产综合自拍| 又紧又大又爽精品一区二区| 激情婷婷亚洲| 亚洲国产精品第一区二区三区| 亚洲区中文字幕| 一区二区国产在线观看| 亚洲视频欧美视频| 亚洲一区二区视频在线| 亚洲欧美电影院| 久久成人资源| 蜜臀久久久99精品久久久久久 | 欧美成人第一页| 亚洲高清毛片| 99国产精品私拍| 香蕉免费一区二区三区在线观看| 久久久精品国产99久久精品芒果| 久久伊人一区二区| 欧美高清在线一区二区| 欧美午夜视频在线观看| 国产精品中文字幕在线观看| 韩国一区二区三区在线观看| 亚洲级视频在线观看免费1级| 一个人看的www久久| 亚洲欧美日韩爽爽影院| 久久亚洲美女| 亚洲激情在线视频| 亚洲一区免费视频| 久久夜色精品国产| 欧美日产国产成人免费图片| 国产欧美一区二区白浆黑人| 亚洲国产精品一区二区久| 一区二区三区精品视频在线观看| 久久福利资源站| 亚洲动漫精品| 亚洲欧美日韩一区二区在线| 免费av成人在线| 国产精品乱子乱xxxx| 激情综合网址| 亚洲女同在线| 亚洲第一中文字幕在线观看| 午夜老司机精品| 欧美精品在线免费| 国内精品免费午夜毛片| 亚洲午夜视频在线| 免费观看亚洲视频大全| 亚洲一区不卡| 欧美精品九九|