[linux-yocto] [PATCH linux-yocto v4.15] yaffs2: Adjust the timer callback and init functions
Bruce Ashfield
bruce.ashfield at windriver.com
Fri Feb 23 20:30:35 PST 2018
On 2018-02-23 12:32 AM, Kevin Hao wrote:
> The timer callback argument type has been changed by commit 354b46b1a0ad
> ("timer: Switch callback prototype to take struct timer_list *
> argument") and init_timer_on_stack() is also removed by commit
> 9c6c273aa424 ("timer: Remove init_timer_on_stack() in favor of
> timer_setup_on_stack()"). Adjust the codes in yaffs2 according to
> these changes.
merged.
Bruce
>
> Signed-off-by: Kevin Hao <kexin.hao at windriver.com>
> ---
> fs/yaffs2/yaffs_vfs.c | 26 ++++++++++++++++----------
> 1 file changed, 16 insertions(+), 10 deletions(-)
>
> diff --git a/fs/yaffs2/yaffs_vfs.c b/fs/yaffs2/yaffs_vfs.c
> index c7be4cddd1de..c99acf08a0d8 100644
> --- a/fs/yaffs2/yaffs_vfs.c
> +++ b/fs/yaffs2/yaffs_vfs.c
> @@ -136,7 +136,7 @@
> #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26))
> #define Y_INIT_TIMER(a) init_timer(a)
> #else
> -#define Y_INIT_TIMER(a) init_timer_on_stack(a)
> +#define Y_INIT_TIMER(a) timer_setup_on_stack(a, NULL, 0)
> #endif
>
> #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 27))
> @@ -2065,10 +2065,16 @@ static unsigned yaffs_bg_gc_urgency(struct yaffs_dev *dev)
> }
>
> #ifdef YAFFS_COMPILE_BACKGROUND
> +struct yaffs_timer {
> + struct timer_list timer;
> + struct task_struct *tsk;
> +};
>
> -void yaffs_background_waker(unsigned long data)
> +void yaffs_background_waker(struct timer_list *t)
> {
> - wake_up_process((struct task_struct *)data);
> + struct yaffs_timer *yt = from_timer(yt, t, timer);
> +
> + wake_up_process(yt->tsk);
> }
>
> static int yaffs_bg_thread_fn(void *data)
> @@ -2082,7 +2088,7 @@ static int yaffs_bg_thread_fn(void *data)
> unsigned int urgency;
>
> int gc_result;
> - struct timer_list timer;
> + struct yaffs_timer yt;
>
> yaffs_trace(YAFFS_TRACE_BACKGROUND,
> "yaffs_background starting for dev %p", (void *)dev);
> @@ -2135,15 +2141,15 @@ static int yaffs_bg_thread_fn(void *data)
> if (time_before(expires, now))
> expires = now + HZ;
>
> - Y_INIT_TIMER(&timer);
> - timer.expires = expires + 1;
> - timer.data = (unsigned long)current;
> - timer.function = yaffs_background_waker;
> + Y_INIT_TIMER(&yt.timer);
> + yt.timer.function = yaffs_background_waker;
> + yt.timer.expires = expires + 1;
> + yt.tsk = current;
>
> set_current_state(TASK_INTERRUPTIBLE);
> - add_timer(&timer);
> + add_timer(&yt.timer);
> schedule();
> - del_timer_sync(&timer);
> + del_timer_sync(&yt.timer);
> #else
> msleep(10);
> #endif
>
More information about the linux-yocto
mailing list