經過兩天的奮鬥,終於把大部分的問題的解決了,看起來 traffic 似乎也可以正常跑了,不過以後還是訂出一個建議的測試流程,否則盲目的抓這些 bug 竟然也花掉兩三個禮拜才發現問題其實很單純…
建議的測試流程,完成一次 porting之後應該做這些測試:
- sleep, usleep function 配合 gettimeofday
- poll, select function 配合 settimeofday
- alarm, setitimer, getitimer 配合 gettimeofday
- poll, select 配合 gettimeofday
事實上,itimer 對於每個 task 都有三種 timer ,不過我們目前只 hack 了 real timer 而已,這部分應該補齊,另外我們將 HZ 設定成 1000hz (每秒 1000 次)相當於 kernel 裡的 jiffies 以 ms 為單位,而原本的預設值是 250hz,因此免去了許多設定 timer 參數必須將 value 再乘上倍數的麻煩,也可以增加精準度。如果要乘上倍數,或許從 NCTUNS_ticks 這系列的 macro 來著手比較快速。
為了簡化測試,我也已經為了上面測試寫了一些簡單的 tools ,讓以後 maintainer 如果 porting 一個新版本可以先做一些基本簡單的測試,再開始跑 Demo Case
...
Read more.