Книга: Разработка ядра Linux
Отладка атомарных операций
Отладка атомарных операций
Начиная с серии 2.5 в ядре появилась отличная инфраструктура для определения всех типов нарушения атомарности. Вспомните из главы 8, "Введение в синхронизацию выполнения кода ядра", что атомарность означает неделимое выполнение, то есть код выполняется без перерыва до завершения, или не завершается вообще. Код, который удерживает спин-блокировку, или выполняется при запрещенной преемптивности ядра, является атомарным. Во время атомарного выполнения нельзя переходить в состояние ожидания. Ожидание при удерживаемой спин-блокировке — один из вариантов взаимоблокировки.
Благодаря свойствам преемптивности, ядро имеет глобальный счетчик преемптивности. Ядро может быть настроено так, что, если выполняется переход в состояние ожидания, или даже выполняется код, который потенциально может переходить в состояние ожидания при выполнении атомарной операции, то ядро выводит предупреждающее сообщение и обратную трассировку. Потенциальные ошибки, которые детектируются таким образом, включают вызов функции schedule () при удерживаемой блокировке, выполнение блокирующего выделения памяти при удерживаемой блокировке, или переход в состояние ожидания при удерживаемой ссылке на данные, связанные с процессором. Эта отладочная инфраструктура может обнаружить очень много ошибок и ее очень рекомендуется использовать.
Следующие конфигурационные параметры позволяют полностью использовать данную возможность.
CONFIG_PREEMPT=y
CONFIG_DEBUG_KERNEL=y
CONFIG_KALLSYMS=y
CONFIG_SPINLOCK_SLEEP=y
- 3. Отладка и профилирование
- Глава 15 Отладка
- 4. Свойства унарных операций
- 3. Свойства бинарных операций
- 4. Варианты операций соединения
- При неудачном выполнении некоторых операций Windows динамик издает пронзительный звук. Можно ли заставить его замолчать?
- Отладка с командной строки
- 5.2.4. Отладка семафоров
- Отладка необработанных исключений в Visual Studio 2005
- 15.5.2.3. Отладка Malloc: dmalloc
- Контроль операций NTP
- Глава 18 Отладка