This shows you the differences between two versions of the page.
so2:laboratoare:lab06 [2018/03/25 12:01] ionel.ghita |
so2:laboratoare:lab06 [2018/04/29 21:37] (current) silvia.pripoae [Workqueues] |
||
---|---|---|---|
Line 162: | Line 162: | ||
void timer_setup(struct timer_list *timer, | void timer_setup(struct timer_list *timer, | ||
- | void (*function)(unsigned long), | + | void (*function)(struct timer_list *), |
unsigned int flags); | unsigned int flags); | ||
</code> | </code> | ||
Line 211: | Line 211: | ||
#include <linux/sched.h> | #include <linux/sched.h> | ||
- | void timer_function(unsigned long arg); | + | void timer_function(struct timer_list *timer); |
struct timer_list timer; | struct timer_list timer; | ||
unsigned long seconds = 1; | unsigned long seconds = 1; | ||
- | setup_timer(&timer, timer_function, 0); | + | timer_setup(&timer, timer_function, 0); |
mod_timer(&timer, jiffies + seconds * HZ); | mod_timer(&timer, jiffies + seconds * HZ); | ||
</code> | </code> | ||
Line 348: | Line 348: | ||
</code> | </code> | ||
- | După cum se poate observa, funcția ''my_work_handler'' primește drept parametru sarcina care se execută. Pentru a putea accesa date private ale modulului, se poate folosi macrodefiniția [https://elixir.bootlin.com/linux/v4.15/source/include/linux/kernel.h#L921|container_of]] ((container_of -- un exemplu de utilizare pentru macrodefiniția ''container_of'' este la parcurgerea [[so2:laboratoare:lab03#Liste|listelor]] din kernel)): | + | După cum se poate observa, funcția ''my_work_handler'' primește drept parametru sarcina care se execută. Pentru a putea accesa date private ale modulului, se poate folosi macrodefiniția [[https://elixir.bootlin.com/linux/v4.15/source/include/linux/kernel.h#L921|container_of]] ((container_of -- un exemplu de utilizare pentru macrodefiniția ''container_of'' este la parcurgerea [[so2:laboratoare:lab03#Liste|listelor]] din kernel)): |
<code c> | <code c> |