Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1255736
  • 博文数量: 261
  • 博客积分: 4196
  • 博客等级: 上校
  • 技术积分: 3410
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-17 17:05
文章分类

全部博文(261)

文章存档

2018年(1)

2017年(22)

2016年(2)

2015年(8)

2014年(27)

2013年(40)

2012年(161)

分类: LINUX

2012-11-09 11:30:45

#include

struct powerkey_t
{
    ...
    struct tast_struct *p_thread;
    ...
}


static struct powerkey_t pwk;

static int create_powerkey_thread(void)
{
    struct powerkey_t *ppwk = &pwk;
    pr_debug("%s\n",__FUNCTION__);
    ppwk->p_thread = kthread_run(&powerkey_thread,NULL,"powerkey thread");
    if(ppwk->p_thread == NULL){
        pr_debug("%s failed\n",__FUNCTION__);
        return -1;
    }
    return 0;
}

static void delete_powerkey_thread(void)
{
    struct powerkey_t *ppwk = &pwk;
    pr_debug("%s\n",__FUNCTION__);

    if(ppwk->p_thread)
        kthread_stop(ppwk->p_thread);

    ppwk->p_thread = NULL;
}


static int powerkey_thread(void *data)
{
    struct powerkey_t *ppwk = &pwk;
    long ret;

    pr_debug("%s\n",__FUNCTION__);
    
    while(!kthread_should_stop())
    {
        ...
        //schedule_timeout();
        ...
    }
    pr_debug("%s exit!\n",__FUNCTION__);
    return 0;
}

static int pmb_probe(struct platform_device *dev)
{
    int ret;    
    ...
    create_powerkey_thread();
    ...
    return 0;
}

static int pmb_remove(struct platform_device *dev)
{
    int ret;
    struct powerkey_t *ppwk = &pwk;
    pr_debug("%s\n",__FUNCTION__);
    ...
    delete_powerkey_thread();
    ...
    return 0;
}

阅读(1403) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~