# 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?