summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/nvos
diff options
context:
space:
mode:
authorGary King <gking@nvidia.com>2010-02-16 18:58:52 -0800
committerGerrit Code Review <gerrit2@git-master-01.nvidia.com>2010-02-16 18:58:52 -0800
commit394a0d7ec6c9ea1d7d19f2e8e81b055fdfd8cf9e (patch)
treea90be2f6d27881dc47df7c255cbf197d00c17fb7 /arch/arm/mach-tegra/nvos
parent67ce6dc0dabf87dc03f0b95789a7c51adb5f186b (diff)
parent06c6c96baa909c9ccf1102c5bda0cb33b8749190 (diff)
Merge "tegra: Added spinlock primitives to NvOs." into android-tegra-2.6.29
Diffstat (limited to 'arch/arm/mach-tegra/nvos')
-rw-r--r--arch/arm/mach-tegra/nvos/nvos.c36
-rw-r--r--arch/arm/mach-tegra/nvos/nvos_exports.c4
2 files changed, 40 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/nvos/nvos.c b/arch/arm/mach-tegra/nvos/nvos.c
index 14f531f76f13..3e98dfc03063 100644
--- a/arch/arm/mach-tegra/nvos/nvos.c
+++ b/arch/arm/mach-tegra/nvos/nvos.c
@@ -772,6 +772,42 @@ void NvOsIntrMutexDestroy(NvOsIntrMutexHandle mutex)
kfree(mutex);
}
+typedef struct NvOsSpinMutexRec
+{
+ spinlock_t lock;
+} NvOsSpinMutex;
+
+NvError NvOsSpinMutexCreate(NvOsSpinMutexHandle *mutex)
+{
+ NvOsSpinMutex *m;
+
+ m = kzalloc( sizeof(NvOsSpinMutex), GFP_KERNEL );
+ if( !m )
+ return NvError_InsufficientMemory;
+
+ spin_lock_init( &m->lock );
+ *mutex = m;
+ return NvSuccess;
+}
+
+void NvOsSpinMutexLock(NvOsSpinMutexHandle mutex)
+{
+ NV_ASSERT( mutex );
+ spin_lock( &mutex->lock );
+}
+
+void NvOsSpinMutexUnlock(NvOsSpinMutexHandle mutex)
+{
+ NV_ASSERT( mutex );
+ spin_unlock( &mutex->lock );
+}
+
+void NvOsSpinMutexDestroy(NvOsSpinMutexHandle mutex)
+{
+ if (mutex)
+ kfree(mutex);
+}
+
typedef struct NvOsSemaphoreRec
{
struct semaphore sem;
diff --git a/arch/arm/mach-tegra/nvos/nvos_exports.c b/arch/arm/mach-tegra/nvos/nvos_exports.c
index 6e39f50ffde1..916daca3ec28 100644
--- a/arch/arm/mach-tegra/nvos/nvos_exports.c
+++ b/arch/arm/mach-tegra/nvos/nvos_exports.c
@@ -112,6 +112,10 @@ EXPORT_SYMBOL(NvOsIntrMutexCreate);
EXPORT_SYMBOL(NvOsIntrMutexLock);
EXPORT_SYMBOL(NvOsIntrMutexUnlock);
EXPORT_SYMBOL(NvOsIntrMutexDestroy);
+EXPORT_SYMBOL(NvOsSpinMutexCreate);
+EXPORT_SYMBOL(NvOsSpinMutexLock);
+EXPORT_SYMBOL(NvOsSpinMutexUnlock);
+EXPORT_SYMBOL(NvOsSpinMutexDestroy);
EXPORT_SYMBOL(NvOsSemaphoreCreate);
EXPORT_SYMBOL(NvOsSemaphoreClone);
EXPORT_SYMBOL(NvOsSemaphoreUnmarshal);