内核线程学习笔记总结6

static int kthread(void *_create)
{
    struct kthread_create_info *create = _create;
    int (*threadfn)(void *data);
    void *data;
    int ret = -EINTR;

    /* Copy data: it's on kthread's stack */
    threadfn = create->threadfn;
    data = create->data;

    /* OK, tell user we're spawned, wait for stop or wakeup */
    __set_current_state(TASK_UNINTERRUPTIBLE);
    complete(&create->started);
    schedule();

    if (!kthread_should_stop())
        ret = threadfn(data);

    /* It might have exited on its own, w/o kthread_stop.  Check. */
    if (kthread_should_stop()) {
        kthread_stop_info.err = ret;
        complete(&kthread_stop_info.done);
    }
    return 0;
这个就是kthead的故事。

 

看到了上面的这些,其实kernel确实也不容易,里面我忽略了很多东西。在其他时间,内核的同步机制,我再整一整。

 

内核的同步机制:原子操作,锁,信号亮,完成变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值