should drivers avoid the use of in_atomic()?

Robert P. J. Day rpjday at crashcourse.ca
Sun May 15 15:22:10 EDT 2011


  perusing some timer-related kernel stuff and i ran across this in
include/linux/hardirq.h:

/*
 * Are we running in atomic context?  WARNING: this macro cannot
 * always detect atomic context; in particular, it cannot know about
 * held spinlocks in non-preemptible kernels.  Thus it should not be
 * used in the general case to determine whether sleeping is possible.
 * Do not use in_atomic() in driver code.
 */
#define in_atomic()     ((preempt_count() & ~PREEMPT_ACTIVE) != PREEMPT_INATOMIC_BASE)

  but a quick check shows a sprinkling of in_atomic() checks in the
drivers/ directory.  is that admonition overly strict?  or what?

rday

-- 

========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================



More information about the Kernelnewbies mailing list