五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

uclinux內(nèi)核線程的創(chuàng)建

2022-12-13 11:36 作者:有AI野心的電工和碼農(nóng)  | 我要投稿

原地址:http://blog.csdn.net/lights_joy/archive/2009/04/23/4102575.aspx

0. kernel_thread

創(chuàng)建內(nèi)核線程可以使用kernel_thread函數(shù):

注意這里的pc值的設(shè)置,它指向了kernel_thread_help,這將是這個(gè)內(nèi)核線程要執(zhí)行的第一行語句:

在這段代碼中,將跳轉(zhuǎn)到用戶指定的函數(shù),然后調(diào)用do_exit進(jìn)行一些清理工作。

具體的創(chuàng)建工作由do_fork完成,此時(shí)傳遞進(jìn)去的stack_start和stack_size的值都為0。

1. do_fork

這個(gè)函數(shù)完成線程的創(chuàng)建,它的關(guān)鍵代碼如下:

它首先為此線程分配一個(gè)pid號(hào),然后復(fù)制出一個(gè)新的task_struct,最后喚醒此線程,當(dāng)然此時(shí)還不會(huì)進(jìn)入執(zhí)行狀態(tài)。

2. copy_process

這個(gè)函數(shù)用于從當(dāng)前線程復(fù)制一個(gè)task_struct出來。

它首先調(diào)用dup_task_struct得到一個(gè)task_struct,同時(shí)也給這個(gè)新的線程分配了一個(gè)thread_info的結(jié)構(gòu)體,這也是這個(gè)新線程的棧,使用BUDDY算法分配,保證以8K對齊

接著調(diào)用copy_thread進(jìn)行線程的復(fù)制。

注意這里在新線程的棧的底端復(fù)制了一份pt_regs,而這份pt_regsPC指針是指向kernel_thread_helper的。且新線程的PC指針是指向ret_from_fork函數(shù)。

3. wake_up_new_task

這個(gè)函數(shù)用于把線程放到一個(gè)CPU核的任務(wù)隊(duì)列中。

這個(gè)函數(shù)挺長的,但實(shí)際上將新線程加入隊(duì)列的工作是由?__activate_task?這個(gè)函數(shù)完成的:

再看?enqueue_task?:

快樂蝦

http://blog.csdn.net/lights_joy/

lights@hb165.com

本文適用于

ADSP-BF561

uclinux-2008r1.5-RC3(移植到vdsp5)

Visual DSP++ 5.0(update 5)

歡迎轉(zhuǎn)載,但請保留作者信息


uclinux內(nèi)核線程的創(chuàng)建的評論 (共 條)

分享到微博請遵守國家法律
新建县| 安化县| 金塔县| 瓦房店市| 苍南县| 中卫市| 三江| 宜川县| 彩票| 永登县| 吉隆县| 林周县| 错那县| 阳西县| 吉安县| 老河口市| 锡林郭勒盟| 鱼台县| 凤冈县| 武穴市| 依兰县| 河南省| 张家口市| 湛江市| 汾西县| 石渠县| 福清市| 桐乡市| 闽清县| 益阳市| 南开区| 伊川县| 祁东县| 宽城| 枣庄市| 五寨县| 上犹县| 故城县| 祁门县| 乌鲁木齐县| 长春市|