函数源码

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source File:kernel\power\main.c Create Date:2022-07-27 10:57:11
首页 Copyright©Brick

598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
static ssize_t state_store(struct kobject *kobj, struct kobj_attribute *attr,
               const char *buf, size_t n)
{
    suspend_state_t state;
    int error;
 
    error = pm_autosleep_lock();
    if (error)
        return error;
 
    if (pm_autosleep_state() > PM_SUSPEND_ON) {
        error = -EBUSY;
        goto out;
    }
 
    state = decode_state(buf, n);
    if (state < PM_SUSPEND_MAX) {
        if (state == PM_SUSPEND_MEM)
            state = mem_sleep_current;
 
        error = pm_suspend(state);
    } else if (state == PM_SUSPEND_MAX) {
        error = hibernate();
    } else {
        error = -EINVAL;
    }
 
 out:
    pm_autosleep_unlock();
    return error ? error : n;
}