RE: CONFIG_PREEMPT_COUNT

From: Skidanov, Alexey
Date: Mon Mar 31 2014 - 08:50:48 EST


Paul,
Thank you for your answer. We have PREEMT_VOLUNTARY defined, so that is the reason why the CONFIG_PREEMPT_COUNT is undefined.
The second question (that was badly formatted in original message) was:

In the previous kernel versions, spin_lock() and spin_unlock() call preempt_enable() and preempt_disable() respectively,
ensuring that the current task will not be preempted by any other task while lock is held. Is this still ensured with these macros defined as âdo nothingâ ?

-----Original Message-----
From: Paul Bolle [mailto:pebolle@xxxxxxxxxx]
Sent: Monday, March 31, 2014 3:25 PM
To: Skidanov, Alexey
Cc: linux-kernel@xxxxxxxxxxxxxxx; Gabbay, Oded
Subject: Re: CONFIG_PREEMPT_COUNT

Alexey,

On Mon, 2014-03-31 at 10:38 +0000, Skidanov, Alexey wrote:
> What is the purpose of CONFIG_PREEMPT_COUNT define and how I can
> define it?

CONFIG_PREEMPT_COUNT is a Kconfig macro, ie it's (in short) to be defined as a result one of the "*config" make targets. And doing
git grep -nw PREEMPT_COUNT

gives
kernel/Kconfig.preempt:38: select PREEMPT_COUNT
kernel/Kconfig.preempt:57:config PREEMPT_COUNT
lib/Kconfig.debug:964: select PREEMPT_COUNT

And looking at those hits it seems PREEMPT_COUNT will be set, and therefore CONFIG_PREEMPT_COUNT defined, if either PREEMPT or DEBUG_ATOMIC_SLEEP are set in a .config.

(I'm not familiar with PREEMPT_COUNT. I think I never used it.)

Hope this helps,


Paul Bolle