我試圖實現下使用系統用戶級線程庫調用,例如獲取上下文,交換上下文等段錯誤使用的getContext()的線程庫
我有一個線程控制塊,看起來像這樣:
struct tcb {
int thread_id;
int thread_pri;
ucontext_t *thread_context;
struct tcb *next;
}
而且我有一個函數調用的init(),看起來像這樣:
void t_init()
{
tcb *tmp;
tmp = malloc(sizeof(tcb));
getcontext(tmp->thread_context); /* let tmp be the context of main() */
running_head = tmp;
}
我用gdb,我在的getContext了運行時分段故障(TMP-> THR ead_context)函數。
我已閱讀getcontext()的手冊頁,但我不確定爲什麼這會向我返回一個分段錯誤!
有什麼建議嗎?
檢查'malloc'返回的指針。 – brokenfoot
但我在getcontext()調用時出錯。 malloc的手冊頁建議一個void *,如果sizeof是NULL,否則可以傳遞給free()的ptr。我在這裏做錯了什麼? – pypep278