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

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>
            国产一区二区三区高清在线观看 | 亚洲日本中文字幕区| 欧美在线一二三| 亚洲网站视频| 午夜视频一区二区| 亚洲一区3d动漫同人无遮挡| aa亚洲婷婷| 亚洲视频第一页| 午夜视频一区| 久久看片网站| 久久久综合精品| 欧美日韩一区二区三区在线 | 午夜精品久久久久影视| 欧美一区二区在线看| 美女主播视频一区| 国产精品美女久久久久久久| 亚洲国产日韩欧美在线图片| 亚洲午夜一区二区| 亚洲第一狼人社区| 一区二区三区精密机械公司| 久久成年人视频| 国产精品久在线观看| 亚洲欧洲日韩在线| 久久人人97超碰国产公开结果| 久久亚洲综合网| 国产精品一区二区你懂的| 99视频超级精品| 性欧美18~19sex高清播放| 欧美国产精品一区| 在线播放日韩专区| 亚洲欧美日韩天堂一区二区| 亚洲高清视频在线观看| 狂野欧美一区| 激情六月综合| 免费欧美视频| 久久久久国产一区二区三区四区 | 亚洲乱码国产乱码精品精天堂| 一区二区欧美日韩| 欧美色大人视频| 一区二区三区波多野结衣在线观看| 久久综合伊人77777蜜臀| 欧美在线不卡视频| 精品动漫av| 欧美成人在线网站| 欧美日韩国产一区精品一区| 日韩视频一区二区| 一区二区高清在线观看| 国产精品卡一卡二| 蜜桃av一区二区| 欧美精品三级在线观看| 亚洲欧美在线磁力| 久久久国产一区二区三区| 韩国成人理伦片免费播放| 欧美777四色影视在线| 欧美日本精品| 欧美1区2区3区| 国产区日韩欧美| 亚洲第一页在线| 国产精品综合视频| 日韩午夜免费| 欧美一区二区三区啪啪| 亚洲黄色一区| 欧美在线一二三四区| 99这里只有精品| 噜噜噜91成人网| 欧美.www| 黄色一区二区在线| 亚洲自拍16p| 亚洲欧美日韩综合| 欧美激情国产高清| 欧美激情中文不卡| 亚洲高清不卡在线观看| 久久精品2019中文字幕| 亚洲欧美成人在线| 欧美视频一区| 亚洲视频香蕉人妖| 亚洲视频专区在线| 欧美午夜性色大片在线观看| 亚洲人体偷拍| 一区二区三区日韩精品| 欧美精品久久久久久久| 亚洲精品国产欧美| 亚洲欧美大片| 国产精品日韩精品欧美精品| 亚洲影院免费观看| 久久午夜激情| 亚洲第一黄色| 欧美巨乳在线| 午夜免费久久久久| 欧美国产免费| 亚洲一区二区欧美| 国产亚洲一区精品| 欧美jizz19性欧美| 日韩一二三区视频| 久热精品视频在线观看一区| 夜夜嗨av色综合久久久综合网| 国产精品视频第一区| 老司机午夜免费精品视频| 一区二区成人精品| 国产欧美日韩在线 | 欧美一级精品大片| 欧美成人在线免费观看| 亚洲欧美日韩中文视频| 亚洲经典三级| 国外成人免费视频| 国产视频在线观看一区| 欧美日本韩国一区| 男同欧美伦乱| 欧美aa国产视频| 久久久不卡网国产精品一区| 一区二区三区四区五区视频| 91久久精品国产| 欧美激情1区2区| 免费成人性网站| 美女视频网站黄色亚洲| 久久久久国产精品厨房| 亚洲欧美日韩成人高清在线一区| 亚洲另类视频| 99国产精品久久久久久久| 亚洲福利精品| 亚洲精品女av网站| 欧美亚洲视频| 久久蜜桃精品| 亚洲国产黄色片| 亚洲视频在线视频| 亚洲综合欧美日韩| 一区二区冒白浆视频| 国产精品高清一区二区三区| 亚洲精品国产精品国产自| 最新国产成人av网站网址麻豆| 另类成人小视频在线| 原创国产精品91| 久久精品人人做人人综合| 亚洲欧美精品伊人久久| 欧美日韩少妇| 欧美视频二区36p| 国产在线乱码一区二区三区| 正在播放亚洲| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲欧美亚洲| 欧美电影在线观看| 国产精品第一页第二页第三页| 狠狠色2019综合网| 午夜精品久久| 亚洲精品一级| 久久精品国产在热久久| 国产综合精品| 久久国产精品亚洲77777| 亚洲免费电影在线| 欧美激情精品久久久久| 亚洲国产精品专区久久| 另类欧美日韩国产在线| 久久精品72免费观看| 国产精品一区在线观看| 久久精品国产96久久久香蕉| 亚洲女女女同性video| 一区二区三区四区五区在线| 国产精品国产a级| 久久久久久久精| 欧美日本在线播放| 亚洲男人av电影| 午夜宅男久久久| 亚洲激情网站免费观看| 亚洲免费高清| 在线日韩中文字幕| 亚洲女人av| 亚洲精品久久| 久久精品国产综合| 亚洲素人在线| 欧美制服第一页| 亚洲网站啪啪| 欧美激情片在线观看| 久久精品一区二区三区不卡| 欧美日韩精品一二三区| 久久国产精品久久w女人spa| 欧美日韩久久久久久| 欧美 日韩 国产 一区| 国产女优一区| 亚洲视频一二| 久久尤物视频| 亚洲图片激情小说| 亚洲欧美一区二区三区极速播放| 日韩一级大片在线| 欧美国产精品v| 91久久中文字幕| 亚洲国产精品视频一区| 欧美精品videossex性护士| 99热免费精品在线观看| 久久成人综合网| 欧美午夜三级| 亚洲一区二区成人| 亚洲一区二区在线看| 亚洲精品一区中文| 欧美精品一区二区视频| 欧美一区高清| 新狼窝色av性久久久久久| 一区二区激情视频| 99视频在线精品国自产拍免费观看| 久久噜噜噜精品国产亚洲综合| 欧美亚洲免费|