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

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

    如果不是有感來研究Linux的源碼,肯定不會發現...原來,竟有這么漂亮的函數定義方式.


#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;\
}

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

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

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


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

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

    在Boost::lambda中也有類似的技巧,不過是宏加模板來完成。
    一般來講,泛化類型時用模板,而要修改字符以生成不同的函數時,再加點宏的技巧。
    上面的你舉的例子小改下:
    #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;                              \ 
    }
     

    當然,Linux內核是不用C++的,所以宏是唯一的選擇了~~~
      回復  更多評論   
  • # re: 精簡的華麗--讀 Linux0.01 syscall系列函數有感!
    KPSN
    Posted @ 2009-06-18 15:50
    @唐風
    ...貌似不錯..
      回復  更多評論   
  • # re: 精簡的華麗--讀 Linux0.01 syscall系列函數有感!
    chen3feng
    Posted @ 2010-03-08 15:08
    別佩服 Linus,syscall 4.4BSD 里就開始這么搞了。  回復  更多評論   
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品国内视频| 麻豆91精品| 欧美在线观看视频在线| 午夜精品久久久久久久久久久久久| 欧美丝袜第一区| 香蕉久久a毛片| 欧美一级大片在线观看| 精品999成人| 亚洲区在线播放| 欧美午夜精品久久久久久人妖| 亚洲欧美激情四射在线日| 欧美一级午夜免费电影| 国语自产精品视频在线看一大j8| 免费观看欧美在线视频的网站| 久久夜色精品国产亚洲aⅴ| 亚洲国产高清视频| 亚洲人成啪啪网站| 国产欧美视频一区二区三区| 欧美成人蜜桃| 欧美午夜久久久| 免费不卡欧美自拍视频| 欧美国产日产韩国视频| 国产精品伊人日日| 亚洲欧美日韩综合aⅴ视频| 国产精品资源| 欧美激情综合| 国产精品伦理| 欧美韩日一区二区| 国产精品腿扒开做爽爽爽挤奶网站| 久久免费视频网| 欧美日韩一区二区免费视频| 久久影院午夜论| 国产精品播放| 亚洲国产日韩欧美在线图片| 国产日韩在线不卡| 在线亚洲激情| 亚洲另类视频| 麻豆精品网站| 两个人的视频www国产精品| 国产精品午夜久久| 亚洲欧美成人| 9l国产精品久久久久麻豆| 久久精品国产久精国产一老狼| 亚洲女优在线| 欧美日韩日本网| 亚洲国产精品久久精品怡红院| 国产日韩综合| 亚洲欧美激情一区二区| 在线视频日韩精品| 欧美精品电影| 91久久久亚洲精品| 91久久综合| 麻豆av福利av久久av| 久久精品夜夜夜夜久久| 国产精品丝袜白浆摸在线| 一区二区三区四区五区精品| 一区二区欧美亚洲| 欧美日韩高清区| 久久久久国产精品一区三寸| 美女图片一区二区| 美女国产一区| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美日韩一视频区二区| 亚洲七七久久综合桃花剧情介绍| 亚洲国产天堂久久国产91| 麻豆精品精华液| 亚洲精品美女久久久久| 亚洲免费久久| 欧美午夜免费影院| 午夜视频久久久久久| 久久精品亚洲精品| 激情欧美日韩一区| 久热精品视频在线观看| 亚洲国产精品视频| 亚洲一区二区久久| 国产日韩免费| 免费不卡欧美自拍视频| 亚洲精品免费网站| 亚洲欧美日本精品| 红桃视频国产精品| 欧美成人按摩| 亚洲午夜精品久久| 久久天天综合| 9久re热视频在线精品| 日韩视频欧美视频| 亚洲精品视频在线播放| 欧美日本三级| 亚洲欧美成人在线| 久久综合一区二区| 99精品视频免费全部在线| 欧美日韩在线看| 午夜日韩在线| 91久久精品视频| 亚洲欧美日韩另类精品一区二区三区 | 欧美精品国产精品| 亚洲一区区二区| 欧美成年人网| 午夜国产精品视频| 亚洲激情第一页| 国产精品久久久久久久久久免费看| 久久精品国产视频| 中日韩视频在线观看| 免费成人黄色av| 国产伦精品一区二区三区高清| 国产亚洲欧洲| 免费的成人av| 一区二区久久| 亚洲国产电影| 久久成人羞羞网站| 999亚洲国产精| 在线播放豆国产99亚洲| 欧美日本中文字幕| 久久精视频免费在线久久完整在线看| 亚洲久久一区| 亚洲国产天堂久久国产91| 欧美在线视频日韩| 亚洲一区二区在线免费观看| 亚洲高清视频在线观看| 国产一区二区三区四区在线观看| 欧美日韩免费观看一区三区| 玖玖综合伊人| 久久精品国产视频| 欧美视频在线免费| 亚洲天堂视频在线观看| 麻豆久久久9性大片| 亚洲影院在线| 一本色道久久99精品综合| 在线观看中文字幕不卡| 国产欧美欧洲在线观看| 欧美无乱码久久久免费午夜一区| 欧美成人精品不卡视频在线观看| 久久精品一区二区三区四区 | 久久久久9999亚洲精品| 午夜日本精品| 欧美在线播放一区二区| 午夜视黄欧洲亚洲| 欧美一区二区视频在线| 欧美一区2区视频在线观看| 亚洲免费一在线| 亚洲欧美中文另类| 久久国产毛片| 久久青草欧美一区二区三区| 久久久7777| 噜噜噜91成人网| 欧美国产一区二区在线观看 | 欧美一区视频| 欧美一区二区三区视频在线观看| 香港久久久电影| 欧美一级久久久| 久久网站免费| 亚洲成色777777女色窝| 亚洲乱码国产乱码精品精可以看 | 欧美成人亚洲成人日韩成人| 麻豆av一区二区三区| 欧美国产日产韩国视频| 亚洲国产影院| 亚洲视频在线视频| 久久大香伊蕉在人线观看热2| 久久视频在线看| 欧美区视频在线观看| 国产精品二区影院| 国产在线一区二区三区四区| 在线观看亚洲视频| 日韩视频―中文字幕| 亚洲欧美国内爽妇网| 久久免费少妇高潮久久精品99| 欧美国产在线视频| 一区二区三区不卡视频在线观看 | 西瓜成人精品人成网站| 久热精品视频在线观看一区| 欧美精品在线一区二区| 国产三级欧美三级| 亚洲精品国产拍免费91在线| 亚洲一区不卡| 蜜臀va亚洲va欧美va天堂| 亚洲乱码一区二区| 久久久久久久久久久久久女国产乱| 欧美aa在线视频| 国产欧美日韩在线| 亚洲精品乱码久久久久久日本蜜臀| 亚洲婷婷综合久久一本伊一区| 久久久99国产精品免费| 91久久精品日日躁夜夜躁国产| 香蕉国产精品偷在线观看不卡| 噜噜爱69成人精品| 国产毛片久久| 一区二区三区国产在线| 久久手机免费观看| 亚洲视频福利| 欧美激情bt| 亚洲电影免费| 欧美中文字幕在线| 99精品视频一区| 久热国产精品| 国产综合第一页| 欧美一区日韩一区| 亚洲一区二区在线播放| 久久午夜视频| 美玉足脚交一区二区三区图片| 国产麻豆精品theporn|