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

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

    如果不是有感來研究Linux的源碼,肯定不會發(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個系統(tǒng)函數(shù)給概括了(Linux0.01為67,0.95增加為89.)..

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

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


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

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

    在Boost::lambda中也有類似的技巧,不過是宏加模板來完成。
    一般來講,泛化類型時用模板,而要修改字符以生成不同的函數(shù)時,再加點宏的技巧。
    上面的你舉的例子小改下:
    #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ù)  更多評論   
  • # re: 精簡的華麗--讀 Linux0.01 syscall系列函數(shù)有感!
    KPSN
    Posted @ 2009-06-18 15:50
    @唐風(fēng)
    ...貌似不錯..
      回復(fù)  更多評論   
  • # re: 精簡的華麗--讀 Linux0.01 syscall系列函數(shù)有感!
    chen3feng
    Posted @ 2010-03-08 15:08
    別佩服 Linus,syscall 4.4BSD 里就開始這么搞了。  回復(fù)  更多評論   

只有注冊用戶登錄后才能發(fā)表評論。
網(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>
            亚洲免费影院| 在线电影国产精品| 日韩午夜在线| 亚洲激情一区二区| 欧美成在线视频| 一本久久青青| 一区二区激情小说| 国产精品外国| 久久躁狠狠躁夜夜爽| 久久久久久久综合色一本| 亚洲国产美女| 亚洲美女精品成人在线视频| 国产精品久久二区二区| 欧美一级在线视频| 久久久美女艺术照精彩视频福利播放| 极品中文字幕一区| 亚洲欧洲在线看| 国产伦理一区| 男女精品视频| 欧美日韩国产色站一区二区三区| 亚洲中字黄色| 久久久久久电影| 亚洲综合视频一区| 狼人社综合社区| 亚洲一区二区黄| 亚洲乱码精品一二三四区日韩在线 | 另类春色校园亚洲| 夜夜嗨av一区二区三区网站四季av| 亚洲无线视频| 亚洲高清免费视频| 亚洲一区二区在线播放| 亚洲国产精品美女| 亚洲尤物视频网| 日韩视频免费在线观看| 欧美一级艳片视频免费观看| 亚洲精品一区二区三区在线观看 | 欧美1区3d| 国产精品一卡二卡| 亚洲精选91| 亚洲激情黄色| 久久狠狠一本精品综合网| 亚洲一区二区在| 欧美1区视频| 久久久久久久波多野高潮日日| 欧美日韩国产a| 欧美成熟视频| 韩日精品视频| 性18欧美另类| 亚洲一区免费| 欧美日韩二区三区| 亚洲国产综合在线| 在线电影国产精品| 欧美在线免费| 久久国产精品99国产| 欧美日韩国产色综合一二三四| 欧美激情久久久久| 激情另类综合| 久久午夜精品一区二区| 久久网站热最新地址| 国产午夜精品美女视频明星a级| 在线一区免费观看| 亚洲综合成人婷婷小说| 欧美日韩亚洲在线| 亚洲人午夜精品| 99国产精品视频免费观看| 免费亚洲电影在线| 亚洲激情图片小说视频| 亚洲美女中文字幕| 欧美日韩国产成人| 一区二区不卡在线视频 午夜欧美不卡在 | 国产精品综合| 亚洲嫩草精品久久| 久久久精品视频成人| 国产午夜精品一区二区三区欧美 | 日韩午夜av| 欧美日韩国产影片| 亚洲午夜精品一区二区| 欧美影院一区| 久久综合伊人77777蜜臀| 影音先锋久久久| 男女视频一区二区| 亚洲麻豆国产自偷在线| 新片速递亚洲合集欧美合集| 国产日韩av一区二区| 久久国内精品自在自线400部| 麻豆精品一区二区av白丝在线| 亚洲激情在线播放| 欧美日韩视频在线| 午夜在线电影亚洲一区| 久久永久免费| 99精品欧美一区二区三区| 欧美日韩视频在线一区二区 | 欧美精品在线免费播放| 中文无字幕一区二区三区| 久久精品国产欧美亚洲人人爽| 在线成人h网| 欧美日韩精品在线| 欧美一级视频精品观看| 亚洲福利视频一区二区| 一区二区黄色| 黄色日韩在线| 国产精品v片在线观看不卡| 欧美一区二区三区喷汁尤物| 欧美激情第1页| 性娇小13――14欧美| 亚洲第一精品久久忘忧草社区| 欧美人成网站| 久久久久免费| 亚洲综合三区| 亚洲精品乱码久久久久久蜜桃91| 欧美在线关看| 亚洲作爱视频| 亚洲大胆在线| 国产日韩一区二区三区| 欧美激情视频给我| 久久精品一区二区| 亚洲视频在线观看免费| 亚洲欧洲精品一区二区三区| 久久久午夜电影| 亚洲欧美成人精品| 亚洲美女av网站| 亚洲电影免费观看高清| 国产麻豆综合| 欧美日韩一区二区高清| 乱码第一页成人| 久久精品视频播放| 亚洲欧美国产高清| 亚洲图片你懂的| 日韩午夜激情av| 亚洲成色999久久网站| 久久青草欧美一区二区三区| 亚洲午夜精品久久久久久app| 亚洲欧洲一区二区三区在线观看| 国产亚洲综合在线| 国产欧美日韩一级| 国产精品亚发布| 国产精品久久久久久久久久尿 | 亚洲免费在线观看视频| 99v久久综合狠狠综合久久| 亚洲成人在线视频网站| 狠狠操狠狠色综合网| 国产亚洲精品一区二区| 国产欧美日韩亚洲| 猛男gaygay欧美视频| 免费观看成人www动漫视频| 久久阴道视频| 另类尿喷潮videofree| 久久人人爽人人| 久久一区二区三区av| 久热精品在线| 久久只精品国产| 欧美成人在线影院| 亚洲国产精品成人| 日韩一区二区精品在线观看| 一区二区三区日韩在线观看| 夜夜爽www精品| 亚洲欧美日韩网| 久久经典综合| 欧美激情亚洲自拍| 欧美视频免费| 国产视频精品免费播放| 樱桃视频在线观看一区| 99成人精品| 欧美一区二区三区喷汁尤物| 久久香蕉国产线看观看av| 欧美成人午夜77777| 亚洲美女啪啪| 欧美一区激情视频在线观看| 久久在线播放| 欧美四级电影网站| 国产主播一区二区三区| 亚洲精品少妇网址| 午夜一区二区三区不卡视频| 美女诱惑黄网站一区| 亚洲伦理在线观看| 亚洲欧美国产高清| 亚洲午夜视频| 亚洲欧美成aⅴ人在线观看| 欧美专区日韩视频| 久久精品国产精品亚洲综合| 免费成人激情视频| 欧美日韩一区二区视频在线| 欧美精品首页| 国内成+人亚洲| 亚洲免费观看| 午夜激情亚洲| 亚洲人屁股眼子交8| 亚洲字幕在线观看| 久久久99国产精品免费| 欧美午夜理伦三级在线观看| 国产在线不卡| 亚洲美女精品一区| 久久综合99re88久久爱| 日韩一级在线观看| 久久久久久一区二区三区| 国产精品毛片a∨一区二区三区|国 | 欧美激情第一页xxx| 国产精品乱看| 亚洲黄一区二区三区| 久久久久久久精|