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

大龍的博客

常用鏈接

統計

最新評論

在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国产精品99久久久久久粉嫩| 亚洲午夜一区二区三区| 久久国产主播| 欧美日本中文| 韩日在线一区| 亚洲网友自拍| 欧美r片在线| 欧美黄色一区| 亚洲精品一区二区网址| 美女久久一区| 亚洲三级电影在线观看| 亚洲三级色网| 欧美一级视频| 欧美第一黄色网| 国产精品免费视频xxxx | 一区二区日韩精品| 性伦欧美刺激片在线观看| 欧美成人蜜桃| 国产日韩专区| 亚洲一级影院| 亚洲国产视频一区| 久久免费高清| 国产亚洲精品久| 亚洲一区二区成人| 亚洲激情在线激情| 久久久青草婷婷精品综合日韩 | 欧美大片网址| 欧美夜福利tv在线| 国产精品久久99| 日韩视频免费观看高清在线视频| 久久久久国产免费免费| 亚洲在线视频一区| 欧美日韩国产黄| 亚洲欧洲日本在线| 免费中文日韩| 久久久久久久久蜜桃| 国产日韩欧美一区二区三区四区 | 亚洲男女自偷自拍| 亚洲激情欧美| 蜜桃久久av一区| 亚洲高清成人| 欧美风情在线观看| 女人天堂亚洲aⅴ在线观看| 激情综合久久| 免费亚洲电影在线| 久久一区二区三区国产精品| 精品成人一区| 欧美成人性网| 欧美国产先锋| 日韩视频二区| 99成人在线| 国产精品色婷婷| 欧美在线免费视屏| 欧美中日韩免费视频| 国产中文一区二区三区| 久色成人在线| 欧美1区2区| 亚洲视频精选在线| 亚洲专区在线视频| 亚洲美女精品久久| 一区二区欧美日韩视频| 国产精品福利网站| 欧美中文在线免费| 久久久久女教师免费一区| 激情综合视频| 亚洲国产高清在线| 欧美日韩国产综合视频在线观看中文| 99亚洲精品| 午夜老司机精品| 亚洲人成网站精品片在线观看| 亚洲韩国青草视频| 国产精品毛片va一区二区三区| 久久久亚洲国产天美传媒修理工| 葵司免费一区二区三区四区五区| 日韩小视频在线观看专区| 亚洲天堂av图片| 在线观看欧美日韩| 99re热这里只有精品视频| 国产区在线观看成人精品| 欧美 日韩 国产 一区| 欧美日韩在线另类| 久久综合色播五月| 欧美日韩中文在线观看| 久久婷婷成人综合色| 欧美激情视频一区二区三区在线播放| 亚洲一区二区在线观看视频| 久久久久久久国产| 亚洲欧美色婷婷| 蜜臀99久久精品久久久久久软件| 亚洲女ⅴideoshd黑人| 老司机精品视频一区二区三区| 一区二区动漫| 久久亚洲精品网站| 久久黄色网页| 欧美视频一区二区三区…| 女女同性精品视频| 国产精品无码专区在线观看| 亚洲第一在线| 国内一区二区在线视频观看| 宅男精品视频| 99精品国产高清一区二区| 久久男人资源视频| 久久国产精品久久久| 欧美日韩国产色站一区二区三区| 老巨人导航500精品| 国产日韩精品在线观看| 国产精品99久久不卡二区| 日韩一二三在线视频播| 久久久久久穴| 久久精品成人| 国产三区二区一区久久| 亚洲午夜精品久久| 亚洲一区二区在线播放| 欧美理论电影在线观看| 亚洲第一页自拍| 亚洲精品久久久久久久久久久| 久久影视三级福利片| 久久人人97超碰精品888| 国产视频观看一区| 欧美亚洲网站| 久久综合99re88久久爱| 黑人极品videos精品欧美裸| 欧美一级久久久| 久久疯狂做爰流白浆xx| 国产区在线观看成人精品| 亚洲国产精品99久久久久久久久| 香蕉av777xxx色综合一区| 亚洲女女做受ⅹxx高潮| 国产精品va在线播放| 亚洲午夜久久久久久久久电影院 | 欧美在线欧美在线| 国产日韩欧美| 久久精品亚洲| 欧美激情一区二区三区蜜桃视频| 亚洲高清在线观看| 欧美成人国产| 一本久久综合亚洲鲁鲁| 午夜国产精品视频| 国产一区白浆| 久久亚洲欧洲| 亚洲精品久久久久久久久久久| 洋洋av久久久久久久一区| 欧美视频二区36p| 香蕉久久夜色| 欧美大片免费观看| 中文在线资源观看网站视频免费不卡 | 亚洲人成网站在线播| 亚洲系列中文字幕| 国产伦理一区| 久久午夜精品一区二区| 亚洲精品欧美日韩专区| 午夜精品剧场| 国内精品久久久久久久97牛牛| 久久这里只有| 国产精品99久久不卡二区| 久久精品最新地址| 亚洲人成人77777线观看| 欧美午夜一区二区| 久久久久亚洲综合| 亚洲人成艺术| 久久久久综合一区二区三区| 日韩亚洲欧美高清| 国产日韩一区二区| 欧美wwwwww| 亚洲中字在线| 亚洲福利精品| 欧美一区二区三区啪啪| 91久久精品国产91性色| 国产欧美日韩| 欧美啪啪一区| 久久精品免费观看| 夜夜嗨av一区二区三区四季av| 久久久青草婷婷精品综合日韩| 国产精品99久久久久久久女警| 精品91在线| 国产精品一区二区久久精品 | 亚洲欧美高清| 亚洲精品久久视频| 欧美高清在线观看| 久久久久久久久久久一区| 亚洲影视在线| 日韩一级片网址| 亚洲国产女人aaa毛片在线| 国产日韩专区在线| 国产精品一区二区你懂的| 亚洲高清资源综合久久精品| 伊人一区二区三区久久精品|