3 onps棧移植說明——添加網卡( 五 )


//* 協議棧內部工作線程列表const static STCB_PSTACKTHREAD lr_stcbaPStackThread[] = { { thread_one_shot_timer_count, NULL},#if SUPPORT_PPP //* 在此按照順序建立ppp工作線程,入口函數為thread_ppp_handler(),線程入口參數為os_open_tty()返回的tty句柄值 //* 其直接強行進行數據類型轉換即可,即作為線程入口參數時直接以如下形式傳遞: //* (void *)句柄值 //* 不要傳遞參數地址,即(void *)&句柄,這種方式是錯誤的#endif};ppp主處理線程將在協議棧加載時由os適配層函數os_thread_onpstack_start()啟動 。在這里只需把其添加到工作線程列表中即可,剩下的交由協議棧自動處理 。在這里需要特別說明的是主處理線程的入口參數為tty句柄 。其值應直接傳遞給線程 , 不能傳遞句柄地址(參見上面的偽代碼注釋) 。比如實際移植到目標系統時如果系統只存在一路ppp,os_open_tty()返回的tty句柄值為0,那么添加到工作線程列表中的ppp主處理線程入口參數的值應為“(void *)0” 。不用關心前面的“(void *)” , 這段數據類型強制轉換代碼只是為了避免編譯器報錯 。ppp鏈路建立成功后,協議棧會以“ppp+tty句柄”的方式命名該鏈路,命名時的tty句柄值就是通過這個啟動參數獲得的,所以這個值一定要配置正確 。對于單路ppp,由于tty句柄值為0,所以ppp鏈路的名稱為“ppp0” 。
至此,ppp網卡相關的移植工作完成 。
【3 onps棧移植說明——添加網卡】

推薦閱讀