diff options
Diffstat (limited to 'drivers/interceptor/platform_kernel_mutex.h')
-rw-r--r-- | drivers/interceptor/platform_kernel_mutex.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/drivers/interceptor/platform_kernel_mutex.h b/drivers/interceptor/platform_kernel_mutex.h new file mode 100644 index 0000000..2e9d080 --- /dev/null +++ b/drivers/interceptor/platform_kernel_mutex.h @@ -0,0 +1,54 @@ +/* Netfilter Driver for IPSec VPN Client + * + * Copyright(c) 2012 Samsung Electronics + * + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +/* + * platform_kernel_mutex.h + * + * Linux interceptor specific defines for the kernel mutex API. + * + */ + +#ifndef PLATFORM_KERNEL_MUTEX_H +#define PLATFORM_KERNEL_MUTEX_H 1 + +/* Sanity check to make sure that optimizations get done correcly + on a UP machine. The following block can be safely removed. */ +#ifndef CONFIG_SMP +#ifdef __ASM_SPINLOCK_H +#error "asm/spinlock.h" should not be included explicitly. +#endif /* __ASM_SPINLOCK_H */ +#endif /* !CONFIG_SMP */ + +#include "linux_params.h" +#include "linux_mutex_internal.h" + +/* Directly map linux mutexes to macros. This causes significantly + less overhead in the non-preemptive UP case, where these macros + are empty. */ +#ifndef KERNEL_MUTEX_USE_FUNCTIONS + +/* This code should not be used unless DEBUG_LIGHT is disabled. */ + +#define ssh_kernel_mutex_lock(a) spin_lock(&((a)->lock)) +#define ssh_kernel_mutex_unlock(b) spin_unlock(&((b)->lock)) + +#else /* KERNEL_MUTEX_USE_FUNCTIONS */ + +void ssh_kernel_mutex_lock_i(SshKernelMutex mutex); +void ssh_kernel_mutex_unlock_i(SshKernelMutex mutex); + +#define ssh_kernel_mutex_lock(a) \ + ssh_kernel_mutex_lock_i((a)) +#define ssh_kernel_mutex_unlock(a) \ + ssh_kernel_mutex_unlock_i((a)) + +#endif /* KERNEL_MUTEX_USE_FUNCTIONS */ + +#endif /* PLATFORM_KERNEL_MUTEX_H */ |