summaryrefslogtreecommitdiff
path: root/mach
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@schwinge.name>2010-03-20 16:12:18 +0100
committerThomas Schwinge <thomas@schwinge.name>2010-03-20 16:12:18 +0100
commit911d7b0cdb96917aef822a5a3239782d9af14f79 (patch)
tree7bce1f8a6dacf3554aca467362041c16e9838fd0 /mach
parent3a37865ac2880824f623602f54c9ef4a808cd2e8 (diff)
parent3a0960feb43a79578a6df004d75ad4d759032a12 (diff)
Merge branch 't/extern_inline' into refs/top-bases/tschwinge/Roger_Whittaker
Diffstat (limited to 'mach')
-rw-r--r--mach/lock-intern.h20
-rw-r--r--mach/mach/mig_support.h3
-rw-r--r--mach/spin-lock.c1
3 files changed, 24 insertions, 0 deletions
diff --git a/mach/lock-intern.h b/mach/lock-intern.h
index 4aaaedc1c0..a854ddcc59 100644
--- a/mach/lock-intern.h
+++ b/mach/lock-intern.h
@@ -29,11 +29,15 @@
/* Initialize LOCK. */
+void __spin_lock_init (__spin_lock_t *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE void
__spin_lock_init (__spin_lock_t *__lock)
{
*__lock = __SPIN_LOCK_INITIALIZER;
}
+#endif
/* Lock LOCK, blocking if we can't get it. */
@@ -41,12 +45,16 @@ extern void __spin_lock_solid (__spin_lock_t *__lock);
/* Lock the spin lock LOCK. */
+void __spin_lock (__spin_lock_t *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE void
__spin_lock (__spin_lock_t *__lock)
{
if (! __spin_try_lock (__lock))
__spin_lock_solid (__lock);
}
+#endif
/* Name space-clean internal interface to mutex locks.
@@ -71,27 +79,39 @@ extern void __mutex_unlock_solid (void *__lock);
/* Lock the mutex lock LOCK. */
+void __mutex_lock (void *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE void
__mutex_lock (void *__lock)
{
if (! __spin_try_lock ((__spin_lock_t *) __lock))
__mutex_lock_solid (__lock);
}
+#endif
/* Unlock the mutex lock LOCK. */
+void __mutex_unlock (void *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE void
__mutex_unlock (void *__lock)
{
__spin_unlock ((__spin_lock_t *) __lock);
__mutex_unlock_solid (__lock);
}
+#endif
+int __mutex_trylock (void *__lock);
+
+#ifdef __USE_EXTERN_INLINES
_EXTERN_INLINE int
__mutex_trylock (void *__lock)
{
return __spin_try_lock ((__spin_lock_t *) __lock);
}
+#endif
#endif /* lock-intern.h */
diff --git a/mach/mach/mig_support.h b/mach/mach/mig_support.h
index f02e8d4f83..fdd43a67c7 100644
--- a/mach/mach/mig_support.h
+++ b/mach/mach/mig_support.h
@@ -67,6 +67,8 @@ extern void mig_reply_setup (const mach_msg_header_t *__request,
/* Idiocy support function. */
extern vm_size_t mig_strncpy (char *__dst, const char *__src, vm_size_t __len);
extern vm_size_t __mig_strncpy (char *__dst, const char *__src, vm_size_t);
+
+#ifdef __USE_EXTERN_INLINES
__extern_inline vm_size_t
__mig_strncpy (char *__dst, const char *__src, vm_size_t __len)
{
@@ -77,6 +79,7 @@ mig_strncpy (char *__dst, const char *__src, vm_size_t __len)
{
return __mig_strncpy (__dst, __src, __len);
}
+#endif
diff --git a/mach/spin-lock.c b/mach/spin-lock.c
index aaebc55cf4..1b1e69c8d6 100644
--- a/mach/spin-lock.c
+++ b/mach/spin-lock.c
@@ -1,3 +1,4 @@
+#define __USE_EXTERN_INLINES 1
#define _EXTERN_INLINE /* Empty to define the real functions. */
#include "spin-lock.h"