- 論壇徽章:
- 0
|
請問各位大俠,我如果在tasklet的實現(xiàn)函數(shù)中一直處理某個事務(wù)而不退出,那么是不是其他的tasklet就沒辦法執(zhí)行?
比如:
static void
test_taskletfuc1(TQUEUE_ARG data)
{
do { i++ ); }while(1);
}
static void
test_taskletfuc2(TQUEUE_ARG data)
{
printk("\n%s 3333333\n", __func__);
tasklet_schedule(&test_tasklet2);
tasklet_schedule(&test_tasklet1);
}
那么是不是test_taskletfuc2()函數(shù)就不會被執(zhí)行到呢?
我在機(jī)器上面試了下,,這樣會在執(zhí)行test_taskletfuc1()的循環(huán)中重啟,可能是watchdog重啟吧,如果是watchdog重啟, 那么他是在哪里重起的呢?
如果不是,那是什么重啟了系統(tǒng)?
還有就是如果我在test_taskletfuc1()和test_taskletfuc2()函數(shù)中都加入一句加入 spin_lock(&test_spin);
即:
static void
test_taskletfuc1(TQUEUE_ARG data)
{
spin_lock(&test_spin);
printk("\n%s 11111\n", __func__);
//do { i++ ); }while(1);
}
static void
test_taskletfuc2(TQUEUE_ARG data)
{
spin_lock(&test_spin);
printk("\n%s 3333333\n", __func__);
tasklet_schedule(&test_tasklet2);
tasklet_schedule(&test_tasklet1);
}
這樣一來好像這個自旋鎖沒有用一樣,,兩個函數(shù)都順利獲得了自旋鎖并往下執(zhí)行,這是為什么呢?
謝謝 |
|