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

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 閱讀(999) 評論(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 里就開始這么搞了。  回復  更多評論   

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   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>
            老牛嫩草一区二区三区日本| 久久青草欧美一区二区三区| 欧美日韩国产影院| 一区二区三区成人| 日韩午夜在线视频| 国产精品久久久久影院色老大| 午夜精品久久久久久久| 亚洲婷婷综合色高清在线| 国产乱码精品一区二区三| 久久激情久久| 欧美成人高清| 亚洲一区二区在线免费观看视频 | avtt综合网| 亚洲视频香蕉人妖| 国产亚洲一区二区三区在线播放| 久久久久久9999| 你懂的网址国产 欧美| 中国av一区| 久久国产欧美日韩精品| 亚洲国产你懂的| 中国女人久久久| 在线精品一区| 亚洲天堂男人| 亚洲黄色高清| 亚洲欧美日韩精品久久奇米色影视| 国内精品久久久久久影视8| 欧美+日本+国产+在线a∨观看| 欧美另类videos死尸| 欧美一区亚洲二区| 欧美精品免费观看二区| 欧美在线视频一区二区三区| 麻豆91精品91久久久的内涵| 亚洲欧美怡红院| 欧美成人综合一区| 久久精品一区蜜桃臀影院| 欧美另类人妖| 欧美成人一区二区| 国产老肥熟一区二区三区| 亚洲欧洲在线一区| 国产农村妇女精品一二区| 亚洲三级视频| 亚洲高清视频中文字幕| 亚洲在线一区二区| 亚洲毛片av在线| 免费的成人av| 久热精品视频在线观看一区| 国产精品高清网站| 亚洲人成7777| 亚洲破处大片| 久久先锋影音| 美女精品一区| 国内精品久久久久久久影视麻豆 | 欧美日本国产视频| 欧美成人视屏| 一区在线观看| 欧美一区亚洲| 久久久999成人| 国产九九精品视频| 亚洲淫性视频| 欧美一级播放| 国产欧美日韩高清| 亚洲欧美日韩国产一区二区三区 | 亚洲人成人一区二区在线观看 | 日韩视频在线一区二区| 亚洲国产三级| 久久综合久久综合这里只有精品| 久久午夜视频| 亚洲国产99精品国自产| 久久久免费av| 亚洲第一精品影视| 亚洲精品久久久久久下一站| 久久中文在线| 91久久精品一区二区三区| 亚洲精品国产精品国自产观看浪潮 | 亚洲私人黄色宅男| 亚洲自拍偷拍福利| 国产精品香蕉在线观看| 亚洲欧美日韩在线一区| 欧美在线你懂的| 国产一区日韩二区欧美三区| 欧美激情亚洲国产| 欧美精品粉嫩高潮一区二区| 老司机午夜精品视频在线观看| 国产一区二区久久久| 欧美在线观看天堂一区二区三区| 久久精品综合一区| 亚洲电影免费| 欧美日韩国产在线一区| 一区二区黄色| 久久青草欧美一区二区三区| 亚洲精品1区| 欧美三级视频在线观看| 午夜欧美精品久久久久久久| 久久婷婷久久| 一区二区三区.www| 国产三区精品| 欧美美女福利视频| 亚洲欧美高清| 亚洲国产精品久久久久秋霞影院| 亚洲天堂成人| 激情欧美一区二区| 欧美日韩亚洲91| 久久久久久尹人网香蕉| 亚洲精品日产精品乱码不卡| 欧美一区永久视频免费观看| 亚洲精品国产精品久久清纯直播| 欧美亚州一区二区三区| 久久久久久91香蕉国产| 一区二区精品国产| 美女福利精品视频| 性久久久久久久久| 99xxxx成人网| 一区二区三区自拍| 国产精品久久二区二区| 女人色偷偷aa久久天堂| 亚洲欧美久久久久一区二区三区| 亚洲大胆人体在线| 久久男人资源视频| 亚洲欧美国产一区二区三区| 亚洲国产乱码最新视频| 国产午夜亚洲精品不卡| 欧美日韩午夜在线| 欧美大片在线观看一区| 久久久久久久久久久久久9999| 亚洲午夜国产成人av电影男同| 欧美黄色一区二区| 老牛影视一区二区三区| 欧美亚洲视频在线观看| 99视频精品全国免费| 亚洲成人自拍视频| 激情欧美日韩| 激情综合视频| 国内精品亚洲| 国产综合18久久久久久| 国产精品羞羞答答| 国产精品户外野外| 国产精品a久久久久| 欧美日韩免费高清| 欧美日本视频在线| 欧美日本乱大交xxxxx| 欧美精品亚洲精品| 欧美精品在线一区二区三区| 欧美大片免费观看在线观看网站推荐| 久久婷婷亚洲| 中文精品在线| 午夜宅男欧美| 亚洲影院色在线观看免费| 亚洲国产美女久久久久| 欧美国产激情二区三区| 蜜桃av一区二区三区| 久久久欧美精品| 另类专区欧美制服同性| 免费观看亚洲视频大全| 欧美1区视频| 欧美激情一区二区三区| 亚洲欧洲日产国产综合网| 亚洲人成毛片在线播放| 亚洲精品黄色| 亚洲视频一区在线观看| 亚洲欧美日韩电影| 久久国产天堂福利天堂| 久久先锋影音| 欧美日韩精品欧美日韩精品| 欧美性猛交xxxx免费看久久久| 国产精品欧美久久久久无广告| 国产精品美腿一区在线看 | 亚洲国内在线| 亚洲精品乱码久久久久久蜜桃91 | 红桃视频国产精品| 91久久精品一区| 亚洲自拍电影| 久久亚洲风情| 亚洲精品乱码久久久久| 国产精品99久久久久久久久久久久| 亚洲综合视频一区| 蜜桃av一区二区三区| 欧美三级在线视频| 韩国av一区二区三区| aa国产精品| 久久精品国产一区二区三区免费看 | 亚洲一区精品在线| 久久久久网站| 亚洲精品资源美女情侣酒店| 亚洲欧美日韩第一区| 美女黄毛**国产精品啪啪| 欧美午夜电影在线| 激情五月***国产精品| 一区二区三区.www| 男男成人高潮片免费网站| 99精品黄色片免费大全| 久久久精品视频成人| 国产精品草草| 亚洲日本乱码在线观看| 久久精品青青大伊人av| 一区二区av在线| 久久综合亚洲社区| 国产婷婷97碰碰久久人人蜜臀| 日韩亚洲欧美一区二区三区| 久久久噜噜噜久噜久久| 亚洲午夜一区二区三区|