LINUX.ORG.RU

kernel note my_process exited with preempt_count


0

1

при завершении программы вижу такую строку в системном журнале:
«kernel note my_process exited with preempt_count 7600»
о чем мне сообщает ядро ?
при этом я не вижу какие то сбои в работе
все это на 2.4.32, самописные драйвер и программа

★★★★★

preempt_count() у тебя равен:

printf "0x%x\n" 7600
0x1db0

При этом

 * We put the hardirq and softirq counter into the preemption
 * counter. The bitmask has the following meaning:
 *
 * - bits 0-7 are the preemption count (max preemption depth: 256)
 * - bits 8-15 are the softirq count (max # of softirqs: 256)
 *
 * The hardirq count can in theory reach the same as NR_IRQS.
 * In reality, the number of nested IRQS is limited to the stack
 * size as well. For archs with over 1000 IRQS it is not practical
 * to expect that they will all nest. We give a max of 10 bits for
 * hardirq nesting. An arch may choose to give less than 10 bits.
 * m68k expects it to be 8.
 *
 * - bits 16-25 are the hardirq count (max # of nested hardirqs: 1024)
 * - bit 26 is the NMI_MASK
 * - bit 27 is the PREEMPT_ACTIVE flag
 *
 * PREEMPT_MASK: 0x000000ff
 * SOFTIRQ_MASK: 0x0000ff00
 * HARDIRQ_MASK: 0x03ff0000
 *     NMI_MASK: 0x04000000

Т.е. твой preempt_count() ни на что разумное не похож. Ты где-то накосячил с синхронизацией (запрещаешь local_bh, делаешь preempt_disable, но потом не разрешаешь), либо портишь память (хотя это маловероятно, т.к. оно проявлялось бы более явно), либо еще что-нибудь.

Если код драйвера хорош, можешь выложить тут, посмотрим. Если плох, то лучше не выкладывай.

Upd. Ядро 2.4, я вначале не заметил. Как там — ХЗ.

ttnl ★★★★★
()
Последнее исправление: ttnl (всего исправлений: 1)
Ответ на: комментарий от ttnl

preempt_count() у тебя равен:

чем дольше работает драйвер (открыто устройство из программы) - тем больше будет в конце число

Если плох, то лучше не выкладывай.

да, местами надо почистить
но ни preempt*, ни local* не вызываю (драйвер всего лишь читает/пишет isa dma самодельную плату)
попробую выкидывать все до тех пор пока не появится/исчезнет данное предупреждение

Upd. Ядро 2.4, я вначале не заметил. Как там — ХЗ.

хм, а теперь я сомневаюсь что ядро 2.4 )
т.к. в исходниках ядра linux-2.4.37.9 я не вижу preempt_count, но вижу в linux-2.6.33 (версии что под рукой были)

вообще надо было сразу написать что это мсвс (2.4.32-vniins42), что они там с ядром наделали непонятно )

x905 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.