Poprzedni Następny

Przerwania w RTLinuksie

Schemat przerwań w RTLinuxie Gdy nadejdzie przerwanie:
  • zostaje wywołana procedura obsługi przerwania RT
  • procedura ta robi, co należy zrobić dla wątków RT, i sprawdza stan SFIF
  • o ile SFIF == 0, informacja o przerwaniu zostaje wrzucona do kolejki oczekujących przerwań i następuje powrót z procedury obsługi za pomocą instrukcji iret
  • o ile SFIF == 1, informacje na stosie zostają odpowiednio zmodyfikowane dla potrzeb linuksowego handlera (tak, żeby wyglądało to na normalne przerwanie), po czym zostaje wywołany odpowiedni 'wrapper'
  • wrapper uruchamia odpowiednią linuksową procedurę obsługi przerwania nie-RT
  • procedura robi, co do niej należy, i przekazuje sterowanie z powrotem do wrappera
  • wrapper sprawdza, czy są jeszcze jakieś zakolejkowane, oczekujące przerwania: jeśli tak, zaczyna je przetwarzać, jeśli nie - wykonuje iret (instrukcję powrotu z obsługi przerwania)