LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

Полностью кросс-ОС способ на любом компе начиная с IBM PC/AT (80286 проц) и дальше по линейке.

#include <sys/io.h>

int main(void) {
  iopl(3);
  outb(0xFE, 0x64);
  return 0;
}

Теоретически может сработать не с первого раза (спецификация порта 0x64 позволяет ему быть «занятым» и не принимающим данные, для проверки занятости надо опрашивать ещё один порт в цикле и ждать в нём какой-то бит), но на практике ни разу такого не случалось, по крайней мере с железом, выпущенным позже 1990 года.

Исходная версия firkax, :

#include <sys/io.h>

int main(void) {
  iopl(3);
  outb(0xFE, 0x64);
  return 0;
}

Теоретически может сработать не с первого раза (спецификация порта 0x64 позволяет ему быть «занятым» и не принимающим данные, для проверки занятости надо опрашивать ещё один порт в цикле и ждать в нём какой-то бит), но на практике ни разу такого не случалось, по крайней мере с железом, выпущенным позже 1990 года.