czekanski.info - Jakub Czekański - O programowaniu i nie tylko

Description: O programowaniu i nie tylko

Example domain paragraphs

Po kilkugodzinnej sesji czytania assemblera, analizy dumpów pamięci i żmudnego przeklikiwania się debuggerem po breakpointach udało mi się rozwiązać problem, który towarzyszył mi od początku projektu.

Wspominałem o nim w poprzednim poście - objawiał się tekstem "VSync: timeout", a efektem było wyłączanie przerwań systemowych, co z kolei blokowało wykonywanie kodu, gdyż BIOS jak i ładowane programy czekały na eventy (te generowane są przez przerwania).

Przez cały czas błędnie zakładałem, że to kod obsługujący przerwania znajdujący się w BIOSie wyłącza przerwania w systemie po kilku timeoutach. Przejrzałem dokładnie zdisassemblowany kod odpowiadający za wyświetlanie tego komunikatu, ale nie natrafiłem na nigdzie na modyfikację tej flagi. Znalazłem natomiast instrukcje SYSCALL.  Okazuje się, że odpowiada ona za wchodzenie i wychodzenie z sekcji krytycznej - prościej mówiąc wyłącza i włącza przerwania na czas obsługi kodu związanego z przerwaniem. Zajrzałem

Links to czekanski.info (1)