3

Я отслеживаю «планирование при атомарной» ошибке в одном из наших драйверов, и мне интересно, является ли ioctl атомарным контекстом. Кроме того, если у кого-то есть что-то, что можно было бы рассказать о том, как попасть в атомарный контекст и из него, а также об общих местах, которые они встречают, было бы полезно.Являются ли функции драйвера ioctl выполненными из атомного контекста под Linux 2.6?

ответ

8

Нет, ioctls обычно работают в контексте процесса. Если во время обработки ioctl драйвер захватывает спин-блокировку, драйвер войдет в атомный контекст и останется в атомном контексте до тех пор, пока он не освободит спин-блокировку.

См: http://lwn.net/Articles/274695/ для хорошей дискуссии на атомарном контексте в Linux

2

Вы превратили в CONFIG_DEBUG_SPINLOCK_SLEEP, что может дать вам больше информации, в том числе трассировки стека, в котором ошибка.

Другой угол, на который нужно смотреть, - это функции сна, которые вы вызываете. Примерами являются msleep(), mutex_lock(), copy_to_user() и т.д.

 Смежные вопросы

  • Нет связанных вопросов^_^