Como chamar os métodos de gerenciamento de energia de um dispositivo de outra maneira que durante suspender para ram?

0

Vamos considerar o driver e1000e para uma placa Ethernet. Esse driver fornece dois métodos de gerenciamento de energia .suspend e .resume para desligar e ligar o cartão respectivamente. Esses métodos são chamados naturalmente durante a transição para o estado S3 ou Suspender para Ram (para .suspend ) e qualquer ativação (para .resume ).

Eu quero chamar cada um desses métodos sempre que eu quiser (não apenas quando todo o sistema tiver que ser suspenso). Em outras palavras, eu quero desligar e retomar o dispositivo sem precisar desligar todo o sistema.

Para fazer isso:

1) Eu baixei o código-fonte do driver e1000e

2) No código fonte do e1000e, eu exportei os métodos .suspend e .resume para torná-los acessíveis externamente:

EXPORT_SYMBOL(e1000e_pm_suspend);
EXPORT_SYMBOL(e1000e_pm_resume);

3) Eu escrevi um módulo na intenção de chamar esses métodos como eu gostaria

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/device.h>

extern int e1000e_pm_suspend(struct device *dev);
extern int e1000e_pm_resume(struct device *dev);

static int __init mfps_driver_init(void){
    return 0;
}

static void __exit mfps_driver_exit(void){

}

module_init(mfps_driver_init);
module_exit(mfps_driver_exit);

E é aí que estou preso. Como meu módulo acessa o dispositivo Ethernet para poder chamar seus métodos de gerenciamento de energia?

    
por Fopa Léon Constantin 21.03.2016 / 22:07

0 respostas