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

大龍的博客

常用鏈接

統計

最新評論

在linux上獲得線程id的方法

在linux2.4版本后,linux使用了NPTL作為自己的線程庫,為了兼容POSIX標準,所以在內核task中有兩個域tgid和tid,前者是進程id,后者是線程id。在linux上獲得線程id的方法,目前我所知的有三種,當然這里的三種是指在用戶態的程序中,否則除非自己寫的kernel module, 都是調用編號224的系統調用實現的(2.6版本)。 

第一種: gettid(), man gettid 可以看到gettid的使用方式。 
使用時要先定義:_syscall0(pid_t, gettid) 
其中_syscall0是一個宏(由于參數的不同還有_syscall1,_syscall2...),定義如下: 
#define _syscall0(type,name) \ 
type name(void) \ 
{ \ 
long __res; \ 
__asm__ volatile ("int $0x80" \   //int 80, 軟中斷 
        : "=a" (__res) \          //輸入輸出都用的eax 
        : "0" (__NR_##name)); \   //#define __NR_gettid 224 
__syscall_return(type,__res); \   //返回tid 
} 
編譯時,宏展開之后,相當于定義了一個pid_t gettid(void)函數,用內嵌匯編實現,在程序中就可以使用gettid()獲得線程id了。 

第二種:syscall(), 名字叫syscall(),卻是glibc中的庫函數。 
使用方式:syscall(__NR_gettid), 其中__NR_gettid就是224,同上。 
syscall的實現要到glibc中去找,不同的硬件平臺有不同的實現版本,在i386上的實現在syscall.S中: 
#include <sysdep.h> 
.text 
ENTRY (syscall) 
PUSHARGS_6 /* Save register contents.  */ 
_DOARGS_6(44) /* Load arguments.  */ 
movl 20(%esp), %eax /* Load syscall number into %eax.  */ 
ENTER_KERNEL /* Do the system call.  */ 
POPARGS_6 /* Restore register contents.  */ 
cmpl $-4095, %eax /* Check %eax for error.  */ 
jae SYSCALL_ERROR_LABEL /* Jump to error handler if error.  */ 
L(pseudo_end): 
ret /* Return to caller.  */ 
PSEUDO_END (syscall) 
其中ENTRY也是一個宏,展開了相當的長,主要用于在鏈接的時候讓gcc能夠"看見"并調用這段用匯編寫成的syscall()函數。 

第三種:pthread_self() 
同樣是一個glibc提供的函數,在linux的manual中說返回的是當前線程的thread ID.但是實際你看到的是一個很長的,似乎沒有規律的值。什么原因得看看它的實現: 
在glibc中,pthread_self()返回的是THREAD_SELF,這又是一個宏 
定義如下 
# define THREAD_SELF \ 
  ({ struct pthread *__self;      \ 
      asm ("movl %%gs:%c1,%0" : "=r" (__self)      \ 
 : "i" (offsetof (struct pthread, header.self)));      \ 
      __self;}) 
這段代碼返回了當前線程的descriptor,pthread_self()得到的就是這個descriptor的地址, 也就是unsigned long int類型的pthread_t。知道了這一點就好辦了,找到thread descriptor的定義: 
struct pthread 
{ 
... 
         pid_t tid; 
... 
} 

接下來知道怎么做了嗎?算好長度n,構造一個假的pthread結構。 
struct pthread_fake 
{ 
void *nothing[n]; 
pid_t tid; 
}; 
用(struct pthread_fake *) pthread_self()->tid得到線程id了 
相比前兩種做法,這種無疑是最繁瑣的,但是同理,可以獲取很多glibc中維護了,但是沒有提供訪問方法的數據。

posted on 2010-12-28 14:34 大龍 閱讀(1210) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   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>
            欧美性一二三区| 亚洲高清久久| 国产一区观看| 一区二区三区四区五区视频| 久久视频一区二区| 亚洲欧美日韩国产成人| 国产精品爱啪在线线免费观看| 亚洲国产美女精品久久久久∴| 久久青草久久| 久久精品视频99| 一区二区在线观看视频在线观看| 欧美一区二区三区四区高清| 亚洲视频播放| 国产精品v欧美精品v日韩精品| 一区二区三区鲁丝不卡| 亚洲美女av电影| 国产精品二区影院| 午夜激情亚洲| 亚洲欧美日韩精品综合在线观看| 国产精品色在线| 久久久精品tv| 久久久久久久久久久久久久一区| 狠狠色狠狠色综合日日小说| 猛干欧美女孩| 久久综合一区二区三区| 久久久亚洲成人| 亚洲美女福利视频网站| 欧美片第一页| 亚洲资源av| 亚洲欧美日韩在线观看a三区| 国产精品视频一区二区三区| 欧美一区二区视频网站| 久久精品国产久精国产爱| 在线观看亚洲a| 亚洲精品国产精品国自产观看浪潮| 卡通动漫国产精品| 亚洲一区免费观看| 香蕉乱码成人久久天堂爱免费| 国产午夜精品在线| 欧美成人亚洲成人| 欧美香蕉视频| 欧美a级片网站| 欧美日韩亚洲系列| 久久久久在线| 欧美裸体一区二区三区| 欧美亚洲日本网站| 免费一区视频| 亚欧美中日韩视频| 欧美成黄导航| 欧美一区二区日韩| 欧美久久电影| 久久精品九九| 欧美日韩无遮挡| 久久免费视频网| 欧美四级在线观看| 免费h精品视频在线播放| 欧美日韩一区在线| 亚洲第一区中文99精品| 国产精品一区毛片| 亚洲美女毛片| 在线观看视频亚洲| 亚洲一区三区视频在线观看| 亚洲美女免费精品视频在线观看| 欧美一区二区免费观在线| 99精品国产一区二区青青牛奶| 久久不射中文字幕| 亚洲欧美视频一区| 欧美精品色综合| 欧美成人精品一区二区三区| 国产伦精品一区二区三区在线观看| 欧美激情第六页| 影音先锋成人资源站| 亚洲免费在线观看| 亚洲图片自拍偷拍| 欧美精品久久久久久久久老牛影院 | 亚洲欧美日韩视频二区| 亚洲欧美一区二区三区极速播放| 亚洲福利视频专区| 欧美专区中文字幕| 新片速递亚洲合集欧美合集 | 亚洲图片你懂的| 欧美精品二区三区四区免费看视频| 久久综合九色欧美综合狠狠| 久久全国免费视频| 久久国产精品72免费观看| 欧美亚洲动漫精品| av成人手机在线| 一区二区激情视频| 欧美日韩日本国产亚洲在线| 91久久国产自产拍夜夜嗨| 亚洲欧洲一区二区在线观看| 久久先锋影音av| 久久乐国产精品| 亚洲电影有码| 男女激情久久| 亚洲欧洲日韩综合二区| 99re热这里只有精品视频| 欧美精品www| 夜夜嗨av一区二区三区网页| 亚洲亚洲精品在线观看| 国产精品欧美日韩久久| 亚洲男人第一av网站| 久久精品国亚洲| 亚洲第一毛片| 欧美精品一区二区在线播放| 日韩亚洲一区在线播放| 亚洲免费视频网站| 国产午夜精品久久| 久久亚洲国产成人| 亚洲欧洲日夜超级视频| 午夜视频一区二区| 狠狠色噜噜狠狠色综合久| 麻豆精品国产91久久久久久| 亚洲精品国产拍免费91在线| 亚洲欧美视频在线观看视频| 国产在线不卡视频| 欧美777四色影视在线| 一片黄亚洲嫩模| 久久久久久久综合狠狠综合| 亚洲激情在线激情| 国产精品美女诱惑| 久久视频一区二区| aa亚洲婷婷| 久久最新视频| 亚洲夜间福利| 伊人久久成人| 欧美视频一区| 久久免费视频观看| 一区二区三区视频在线| 老司机精品视频网站| 亚洲图片你懂的| 在线日韩欧美| 国产精品美女在线| 欧美成人自拍| 性刺激综合网| 99在线精品观看| 欧美+日本+国产+在线a∨观看| 中国av一区| 亚洲高清一二三区| 国产美女一区| 欧美日韩亚洲一区三区| 久久一区二区三区av| 亚洲欧美日韩综合aⅴ视频| 亚洲国产一区二区a毛片| 久久一综合视频| 亚洲一区区二区| 亚洲精品婷婷| 玉米视频成人免费看| 国产欧美一区二区精品婷婷| 欧美欧美全黄| 欧美~级网站不卡| 久久精品日产第一区二区三区| 亚洲午夜精品17c| 亚洲美女网站| 亚洲人成网站在线播| 欧美韩日视频| 亚洲黄一区二区| 欧美成人有码| 亚洲国产精品一区二区第一页 | 亚洲视频在线播放| 尤物yw午夜国产精品视频| 国产伦精品一区二区三区免费| 欧美激情1区2区3区| 亚洲国产一区二区视频| 另类成人小视频在线| 久久精品二区| 欧美一区二区性| 亚洲欧美成人| 亚洲欧美日韩国产中文在线| 一本久道久久久| 日韩手机在线导航| 亚洲免费播放| 日韩性生活视频| 亚洲美女91| 一区二区三区高清在线观看| 亚洲精品美女久久7777777| 亚洲国产天堂网精品网站| 悠悠资源网久久精品| 在线看无码的免费网站| 尤物九九久久国产精品的特点 | 毛片一区二区| 久久久美女艺术照精彩视频福利播放| 香港成人在线视频| 久久成人综合网| 久久综合久久美利坚合众国| 久久视频这里只有精品| 久久一区中文字幕| 男人的天堂亚洲在线| 欧美理论电影网| 国产精品高清在线| 国产视频一区在线| 亚洲第一精品久久忘忧草社区| 亚洲第一网站免费视频| 亚洲美女啪啪| 午夜精品久久久久久久男人的天堂| 先锋影音久久| 欧美成人a视频| 最新高清无码专区| 亚洲午夜av电影| 久久久五月婷婷|