September 2017

S M T W T F S
     12
345 6789
10111213 141516
171819202122 23
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Monday, May 15th, 2017 12:51
Утро начинается так: «Левый глазик, открывайся, правый глазик, открывайся! Эй, левый, куда закрылся? Открывайся! Правый… Твою ж мать!»

BeOS`ники поймут.

Полтора дня криков, воплей, махания руками, изучения электрических схем и тыканья щупами осциллографа во всякие интересные места отказывающегося нормально работать DSP. Наконец, техническое задание сформулировано. Выясняется, что я должен написать функцию, следящую за состоянием входа L10 процессора, и рапортующую о том, что состояние этого входа изменилось.

Всё бы ничего, но дополнительный гуглёж подсказал, что L10, в определённых кругах известный как пин № 80 или XRS, — это Device Reset, временное отключение питания. Разумеется, программа бежит на этом же процессоре.

В API операционной системы BeOS было два системных вызова, которыми программист мог пользоваться, чтобы получать необычную информацию о компьютере, на котором бежит его творение.

  • Функция int32 is_computer_on(void) возвращала 1, если компьютер в момент вызова был включён. Если компьютер был выключен, возвращаемое значение было не определено.
  • Функция double is_computer_on_fire(void) возвращала температуру материнской платы, если компьютер в момент вызова пылает огнём (натурально, с языками пламени). Если же компьютер ещё не загорелся, функция возвращала какое-то другое число.

Кроме чисто развлекательной цели, обе эти функции выполняли совершенно серьёзную задачу. Они были частью ядра операционной системы, и можно было вызывать их, чтобы посмотреть, насколько быстро во время работы под нагрузкой ядро операционной системы в ответ на вызовы возвращает целое или дробное число.

© Источник.

То есть от меня ожидалось, что я напишу что-то вроде if (!is_computer_on()) { … }