Как вызвать метод pm_power_off() из ядра linux?

Пользователь

от elian.swift , в категории: C/C++ , 6 месяцев назад

Как вызвать метод pm_power_off() из ядра linux?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от pauline , 6 месяцев назад

@elian.swift 

Вызов метода pm_power_off() из ядра Linux можно осуществить следующим образом:

  1. Создайте новый файл с именем poweroff.c в директории ядра Linux.
  2. Вставьте следующий код в файл poweroff.c:
1
2
3
4
5
6
7
8
#include 
#include 
#include 

asmlinkage long sys_poweroff(void)
{
    return kernel_power_off();
}


  1. Добавьте запись в Makefile для компиляции файла poweroff.c. Найдите строку, где добавляются исходные файлы к ядру, и добавьте poweroff.o к списку (например, obj-y += poweroff.o).
  2. Соберите ядро Linux.
  3. Используйте системный вызов sys_poweroff() в своем коде, чтобы вызвать метод pm_power_off():
1
2
3
4
5
6
7
#include 

int main()
{
    syscall(__NR_poweroff);
    return 0;
}


Обратите внимание, что вызов pm_power_off() требует привилегий суперпользователя, поэтому ваш код должен быть запущен с соответствующими правами.