fix init work bug

kernel_wtimer_num to volatile
This commit is contained in:
John Doe
2023-12-01 11:19:07 +00:00
parent 0d1f57f06e
commit a880fd3b32
3 changed files with 21 additions and 5 deletions

View File

@@ -3,7 +3,7 @@
// Global variable
kernel_watch_timer kernel_wtimer_list[MAX_TIMER_NUM] = {
0}; // all kernel_watch_timer
int kernel_wtimer_num = 0; // current kernel_watch_timer number
volatile int kernel_wtimer_num = 0; // current kernel_watch_timer number
EXPORT_SYMBOL(kernel_wtimer_list); // export kernel_watch_timer_list
EXPORT_SYMBOL(kernel_wtimer_num); // export kernel_watch_timer_num
@@ -18,15 +18,19 @@ unsigned char del_all_kwarg_by_pid(pid_t pid) {
kernel_watch_timer *timer = NULL;
printk(KERN_INFO "del kwarg...");
// printk(KERN_INFO "del kwarg kernel_wtimer_num:%d", kernel_wtimer_num);
for (i = 0; i < kernel_wtimer_num; i++) {
// printk(KERN_INFO "del watch i:%d", i);
timer = &(kernel_wtimer_list[i]);
timer_del_watch_by_pid(timer, pid);
}
// printk(KERN_INFO "del kwarg kernel_wtimer_num:%d", kernel_wtimer_num);
for (i = 0; i < kernel_wtimer_num; i++) {
// printk(KERN_INFO "del timer i:%d", i);
timer = &(kernel_wtimer_list[i]);
if (TIMER_NO_KWARG(timer)) // no available kwarg
{
// printk(KERN_INFO "del timer empty %d", i);
// cancel and destroy timer.work
// make sure empty timer has no work active
cancel_work_sync(&timer->wk);