Прерывания останавливают текущий код и начинают выполнение высокоприоритетного обработчика; пока работает этот обработчик, ничто другое не может получить процессор. Поэтому, если вам нужно сделать что-то сложное, ваш обработчик прерываний может повесить всю систему.
Решение: заполните структуру данных всеми необходимыми данными, а затем сохраните эту структуру данных с указателем на обработчик в таблице вызовов. Некоторая служба (обычно обработчик часов) в конечном итоге посетит таблицу и выполнит записи одну за другой в стандартном контексте (то есть той, которая не блокирует переключение процесса).