linux/drivers/staging/mali/DX910-SW-99002-r5p1-01rel0/driver/src/devicedrv/mali/linux/mali_osk_timers.c
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2010-2015 ARM Limited. All rights reserved.
   3 * 
   4 * This program is free software and is provided to you under the terms of the GNU General Public License version 2
   5 * as published by the Free Software Foundation, and any use by you of this program is subject to the terms of such GNU licence.
   6 * 
   7 * A copy of the licence is included with the program, and can also be obtained from Free Software
   8 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
   9 */
  10
  11/**
  12 * @file mali_osk_timers.c
  13 * Implementation of the OS abstraction layer for the kernel device driver
  14 */
  15
  16#include <linux/timer.h>
  17#include <linux/slab.h>
  18#include "mali_osk.h"
  19#include "mali_kernel_common.h"
  20
  21struct _mali_osk_timer_t_struct {
  22        struct timer_list timer;
  23};
  24
  25typedef void (*timer_timeout_function_t)(unsigned long);
  26
  27_mali_osk_timer_t *_mali_osk_timer_init(void)
  28{
  29        _mali_osk_timer_t *t = (_mali_osk_timer_t *)kmalloc(sizeof(_mali_osk_timer_t), GFP_KERNEL);
  30        if (NULL != t) init_timer(&t->timer);
  31        return t;
  32}
  33
  34void _mali_osk_timer_add(_mali_osk_timer_t *tim, unsigned long ticks_to_expire)
  35{
  36        MALI_DEBUG_ASSERT_POINTER(tim);
  37        tim->timer.expires = jiffies + ticks_to_expire;
  38        add_timer(&(tim->timer));
  39}
  40
  41void _mali_osk_timer_mod(_mali_osk_timer_t *tim, unsigned long ticks_to_expire)
  42{
  43        MALI_DEBUG_ASSERT_POINTER(tim);
  44        mod_timer(&(tim->timer), jiffies + ticks_to_expire);
  45}
  46
  47void _mali_osk_timer_del(_mali_osk_timer_t *tim)
  48{
  49        MALI_DEBUG_ASSERT_POINTER(tim);
  50        del_timer_sync(&(tim->timer));
  51}
  52
  53void _mali_osk_timer_del_async(_mali_osk_timer_t *tim)
  54{
  55        MALI_DEBUG_ASSERT_POINTER(tim);
  56        del_timer(&(tim->timer));
  57}
  58
  59mali_bool _mali_osk_timer_pending(_mali_osk_timer_t *tim)
  60{
  61        MALI_DEBUG_ASSERT_POINTER(tim);
  62        return 1 == timer_pending(&(tim->timer));
  63}
  64
  65void _mali_osk_timer_setcallback(_mali_osk_timer_t *tim, _mali_osk_timer_callback_t callback, void *data)
  66{
  67        MALI_DEBUG_ASSERT_POINTER(tim);
  68        tim->timer.data = (unsigned long)data;
  69        tim->timer.function = (timer_timeout_function_t)callback;
  70}
  71
  72void _mali_osk_timer_term(_mali_osk_timer_t *tim)
  73{
  74        MALI_DEBUG_ASSERT_POINTER(tim);
  75        kfree(tim);
  76}
  77