Я думаю, что вы просите квадратный круг: если бы ядро просто выполняло вашу функцию "пользовательская область" напрямую, это была бы не "пользовательская область", а скорее самозаряжаемая загружаемая система модулей. Я предполагаю, что то, что вы действительно хотите, это способ выяснить, что нужно сделать, чтобы все это работало без сбоев вашего ПК каждый раз, когда вы совершаете ошибку. Может быть, вы могли бы использовать обработчики сигналов как средство «обратного вызова», но я слишком утомлен, чтобы указывать, как вы получите обратно в ядро, как если бы вы вызывали функцию return. Проблема здесь в том, что при любом переключении контекста в userland-> kernel ядро запускается с новым стеком, поэтому адрес возврата давно исчез. Как насчет того, чтобы объединить обработчик сигналов с mmap'ing / dev / mem и позволить своему псевдоприводу пользовательского интерфейса напрямую просматривать структуры данных драйвера режима ядра? Но тогда вы вернетесь к перезагрузке, когда совершите ошибку, если вы не поймете, как отобразить только структуры данных вашего драйвера? Другими подходящими механизмами могут быть СТРИМЫ и дисциплины линии TTY; Я думаю, что они дают какую-то трансмогрифицирующую способность. Конечно, ничто из этого не является хорошей идеей в качестве постоянного решения!