In arch/x86/kerne/apm_32.c there is the suspend() function - question
is why immediately after calling save_processor_state() it will call
restore_processor_state()?   And subsequently the other half of the
routine is focusing on restoration?

static int suspend(int vetoable)
{
        int             err;
        struct apm_user *as;

        if (pm_send_all(PM_SUSPEND, (void *)3)) {
                /* Vetoed */
                if (vetoable) {
                        if (apm_info.connection_version > 0x100)
                                set_system_power_state(APM_STATE_REJECT);
                        err = -EBUSY;
                        ignore_sys_suspend = 0;
                        printk(KERN_WARNING "apm: suspend was vetoed.\n");
                        goto out;
                }
                printk(KERN_CRIT "apm: suspend was vetoed, but suspending 
anyway.\n");
        }

        device_suspend(PMSG_SUSPEND);
        local_irq_disable();
        device_power_down(PMSG_SUSPEND);

        local_irq_enable();

        save_processor_state();===========> after this
        err = set_system_power_state(APM_STATE_SUSPEND);
        ignore_normal_resume = 1;
        restore_processor_state();============>is this????

        local_irq_disable();
        reinit_timer();

        if (err == APM_NO_ERROR)
                err = APM_SUCCESS;
        if (err != APM_SUCCESS)
                apm_error("suspend", err);
        err = (err == APM_SUCCESS) ? 0 : -EIO;
        device_power_up();
        local_irq_enable();
        device_resume();
        pm_send_all(PM_RESUME, (void *)0);
        queue_event(APM_NORMAL_RESUME, NULL);
 out:
        spin_lock(&user_list_lock);
        for (as = user_list; as != NULL; as = as->next) {
                as->suspend_wait = 0;
                as->suspend_result = err;
        }
        spin_unlock(&user_list_lock);
        wake_up_interruptible(&apm_suspend_waitqueue);
        return err;
}

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [EMAIL PROTECTED]
Please read the FAQ at http://kernelnewbies.org/FAQ

Reply via email to