/* * Copyright (C) 2001-2012 Philippe Gerum . * Copyright (C) 2004,2005 Gilles Chanteperdrix . * * Xenomai is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * * Xenomai is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Xenomai; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. */ #include #include /** * @ingroup cobalt_core * @defgroup cobalt_core_lock Locking services * * The Xenomai core deals with concurrent activities from two distinct * kernels running side-by-side. When interrupts are involved, the * services from this section control the @b hard interrupt state * exclusively, for protecting against processor-local or SMP * concurrency. * * @note In a dual kernel configuration, hard interrupts are * gated by the CPU. When enabled, hard interrupts are immediately * delivered to the Xenomai core if they belong to a real-time source, * or deferred until enabled by a second-stage virtual interrupt mask, * if they belong to regular Linux devices/sources. * * @{ */ DEFINE_XNLOCK(nklock); #if defined(CONFIG_SMP) || defined(CONFIG_XENO_OPT_DEBUG_LOCKING) EXPORT_SYMBOL_GPL(nklock); #ifdef CONFIG_XENO_ARCH_OUTOFLINE_XNLOCK int ___xnlock_get(struct xnlock *lock /*, */ XNLOCK_DBG_CONTEXT_ARGS) { return ____xnlock_get(lock /* , */ XNLOCK_DBG_PASS_CONTEXT); } EXPORT_SYMBOL_GPL(___xnlock_get); void ___xnlock_put(struct xnlock *lock /*, */ XNLOCK_DBG_CONTEXT_ARGS) { ____xnlock_put(lock /* , */ XNLOCK_DBG_PASS_CONTEXT); } EXPORT_SYMBOL_GPL(___xnlock_put); #endif /* out of line xnlock */ #endif /* CONFIG_SMP || XENO_DEBUG(LOCKING) */ #ifdef CONFIG_XENO_OPT_DEBUG_LOCKING DEFINE_PER_CPU(struct xnlockinfo, xnlock_stats); EXPORT_PER_CPU_SYMBOL_GPL(xnlock_stats); #endif /** @} */