# 2025q1 Homework3 (kxo) contributed by < `SimonLiu423` > {%hackmd NrmQUGbRQWemgwPfhzXj6g %} :::danger 說好的進度呢? ::: ## TODO - [ ] Reduce data transfer between user and kernel ## Questions 1. In `main.c`, is it possible that the second `timer` triggers before the first `game_tasklet`? Causing the `ai_game()` to be called twice instead of once? 2. In [The Linux Kernel Module Programming Guide](https://sysprog21.github.io/lkmpg/) Chapter **15.1 Tasklets**, it is said that **tasklet** is run in interrupt context. Then why did the example use `mdelay` inside the tasklet function? And how did it switch back to init function and call `pr_info`? 3. In `game_tasklet_func`, `queue_work(kxo_workqueue, &drawboard_work);` is not nested inside `if (finish)`. Does it mean that it might draw the same board multiple times?