Полезно при этом добавлять, какое именно ядро вас интересует. Конечно достаточно легко догадаться, что речь идет об линуксе, однако правило хорошего тона требует, что-бы вы сообщали всю необходимую для ответа на ваш вопрос информацию, т.к. люди, куда более занятые нежеле вы, и куда более дорого ценящие свое время, не будут тратить время на вопросы вида "а что это за хня", а на четко поставленный и корректно сформулированный вопрос вполне могут ответить.
прошу прощения за неверно сформулированный вопрос. меня интересует более общий, независящий от операционки случай, т.е. существует ли возможность программно сэмулировать нажатия кнопок reset и poweroff на корпусе компьютера? грубо говоря, можно ли программно подать сигнал на контакты reset_sw и power_led?
> можно ли программно подать сигнал на контакты reset_sw и power_led?
Это пожалуй вряд-ли, но вот это возможно вам поможет:
REBOOT(2) Linux Programmer's Manual REBOOT(2)
NAME
reboot - reboot or enable/disable Ctrl-Alt-Del
SYNOPSIS
For libc4 and libc5 the library call and the system call are identical, and since kernel version 2.1.30 there are
symbolic names LINUX_REBOOT_* for the constants and a fourth argument to the call:
#include <unistd.h>
#include <linux/reboot.h>
int reboot(int magic, int magic2, int flag, void *arg);
Under glibc some of the constants involved have gotten symbolic names RB_*, and the library call is a 1-argument
wrapper around the 3-argument system call:
#include <unistd.h>
#include <sys/reboot.h>
int reboot(int flag);
...
This system call will fail (with EINVAL) unless magic equals LINUX_REBOOT_MAGIC1 (that is, 0xfee1dead) and magic2
equals LINUX_REBOOT_MAGIC2 (that is, 672274793). However, since 2.1.17 also LINUX_REBOOT_MAGIC2A (that is,
85072278) and since 2.1.97 also LINUX_REBOOT_MAGIC2B (that is, 369367448) and since 2.5.71 also
LINUX_REBOOT_MAGIC2C (that is, 537993216) are permitted as value for magic2. (The hexadecimal values of these con-
stants are meaningful.) The flag argument can have the following values:
>Re: аварийное завершение в режиме ядра >независящий от операционки случай O_o
Посмотрите arch/i386/mach-generic/mach_reboot.h:mach_reboot(), там программно дергают линию RESET.
С питанием сложнее, на одной только x86 архитектуре 4 способа отключения : apm, acpi, ipmi и voyager. А как сам apm или acpi биос это делает неизвестно, да и наверно очень сильно зависит от материнки.
Лучше воспользуйтесь мощью линукса -- machine_power_off() и machine_restart() будут работать как надо на любой архитектуре. В *BSD наверно тоже есть нечто подобное. А других приличных операционок не существует.