]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/i386/lock.h
xnu-3248.40.184.tar.gz
[apple/xnu.git] / osfmk / i386 / lock.h
index d353be3c70bbd498b15b2957c8d86f389509f69f..9357421954bf12716f9057bf8efc30c9c5f531b3 100644 (file)
 #ifndef        _I386_LOCK_H_
 #define        _I386_LOCK_H_
 
-#include <sys/appleapiopts.h>
-
-#ifdef __APPLE_API_PRIVATE
-
-#ifdef MACH_KERNEL_PRIVATE
-
-#include <kern/macro_help.h>
-#include <kern/assert.h>
-#include <i386/hw_lock_types.h>
-#include <i386/locks.h>
-
-#include <mach_rt.h>
-#include <mach_ldebug.h>
-
-typedef lck_rw_t lock_t;
-
-extern unsigned int LockTimeOutTSC;    /* Lock timeout in TSC ticks */
-extern unsigned int LockTimeOut;       /* Lock timeout in absolute time */ 
-
-
-#if defined(__GNUC__)
-
-/*
- *     General bit-lock routines.
- */
-
-#define        bit_lock(bit,l)                                                 \
-       __asm__ volatile("      jmp     1f      \n                      \
-                       0:      btl     %0, %1  \n                      \
-                               jb      0b      \n                      \
-                       1:      lock            \n                      \
-                               btsl    %0,%1   \n                      \
-                               jb      0b"                     :       \
-                                                               :       \
-                       "r" (bit), "m" (*(volatile int *)(l))   :       \
-                       "memory");
-
-#define        bit_unlock(bit,l)                                               \
-       __asm__ volatile("      lock            \n                      \
-                               btrl    %0,%1"                  :       \
-                                                               :       \
-                       "r" (bit), "m" (*(volatile int *)(l)));
-
-/*
- *      Set or clear individual bits in a long word.
- *      The locked access is needed only to lock access
- *      to the word, not to individual bits.
- */
-
-#define        i_bit_set(bit,l)                                                \
-       __asm__ volatile("      lock            \n                      \
-                               btsl    %0,%1"                  :       \
-                                                               :       \
-                       "r" (bit), "m" (*(volatile int *)(l)));
-
-#define        i_bit_clear(bit,l)                                              \
-       __asm__ volatile("      lock            \n                      \
-                               btrl    %0,%1"                  :       \
-                                                               :       \
-                       "r" (bit), "m" (*(volatile int *)(l)));
-
-static inline char     xchgb(volatile char * cp, char new);
-
-static inline void     atomic_incl(volatile long * p, long delta);
-static inline void     atomic_incs(volatile short * p, short delta);
-static inline void     atomic_incb(volatile char * p, char delta);
-
-static inline void     atomic_decl(volatile long * p, long delta);
-static inline void     atomic_decs(volatile short * p, short delta);
-static inline void     atomic_decb(volatile char * p, char delta);
-
-static inline long     atomic_getl(const volatile long * p);
-static inline short    atomic_gets(const volatile short * p);
-static inline char     atomic_getb(const volatile char * p);
-
-static inline void     atomic_setl(volatile long * p, long value);
-static inline void     atomic_sets(volatile short * p, short value);
-static inline void     atomic_setb(volatile char * p, char value);
-
-static inline char     xchgb(volatile char * cp, char new)
-{
-       register char   old = new;
-
-       __asm__ volatile ("     xchgb   %0,%2"                  :
-                       "=q" (old)                              :
-                       "0" (new), "m" (*(volatile char *)cp) : "memory");
-       return (old);
-}
-
-static inline void     atomic_incl(volatile long * p, long delta)
-{
-       __asm__ volatile ("     lock            \n              \
-                               add    %0,%1"           :       \
-                                                       :       \
-                               "r" (delta), "m" (*(volatile long *)p));
-}
-
-static inline void     atomic_incs(volatile short * p, short delta)
-{
-       __asm__ volatile ("     lock            \n              \
-                               addw    %0,%1"          :       \
-                                                       :       \
-                               "q" (delta), "m" (*(volatile short *)p));
-}
-
-static inline void     atomic_incb(volatile char * p, char delta)
-{
-       __asm__ volatile ("     lock            \n              \
-                               addb    %0,%1"          :       \
-                                                       :       \
-                               "q" (delta), "m" (*(volatile char *)p));
-}
-
-static inline void     atomic_decl(volatile long * p, long delta)
-{
-       __asm__ volatile ("     lock            \n              \
-                               sub             %0,%1"          :       \
-                                                       :       \
-                               "r" (delta), "m" (*(volatile long *)p));
-}
-
-static inline int      atomic_decl_and_test(volatile long * p, long delta)
-{
-       uint8_t ret;
-       __asm__ volatile (
-               "       lock            \n\t"
-               "       sub             %1,%2   \n\t"
-               "       sete    %0"
-               : "=qm" (ret)
-               : "r" (delta), "m" (*(volatile long *)p));
-       return ret;
-}
-
-static inline void     atomic_decs(volatile short * p, short delta)
-{
-       __asm__ volatile ("     lock            \n              \
-                               subw    %0,%1"          :       \
-                                                       :       \
-                               "q" (delta), "m" (*(volatile short *)p));
-}
-
-static inline void     atomic_decb(volatile char * p, char delta)
-{
-       __asm__ volatile ("     lock            \n              \
-                               subb    %0,%1"          :       \
-                                                       :       \
-                               "q" (delta), "m" (*(volatile char *)p));
-}
-
-static inline long     atomic_getl(const volatile long * p)
-{
-       return (*p);
-}
-
-static inline short    atomic_gets(const volatile short * p)
-{
-       return (*p);
-}
-
-static inline char     atomic_getb(const volatile char * p)
-{
-       return (*p);
-}
-
-static inline void     atomic_setl(volatile long * p, long value)
-{
-       *p = value;
-}
-
-static inline void     atomic_sets(volatile short * p, short value)
-{
-       *p = value;
-}
-
-static inline void     atomic_setb(volatile char * p, char value)
-{
-       *p = value;
-}
-
-
-#else  /* !defined(__GNUC__) */
-
-extern void    i_bit_set(
-       int index,
-       void *addr);
-
-extern void    i_bit_clear(
-       int index,
-       void *addr);
-
-extern void bit_lock(
-       int index,
-       void *addr);
-
-extern void bit_unlock(
-       int index,
-       void *addr);
-
-/*
- * All other routines defined in __GNUC__ case lack
- * definitions otherwise. - XXX
- */
-
-#endif /* !defined(__GNUC__) */
-
-extern void            kernel_preempt_check (void);
-
-#endif /* MACH_KERNEL_PRIVATE */
-
-#endif /* __APLE_API_PRIVATE */
+#warning This header is deprecated. Use <kern/locks.h> instead.
 
 #endif /* _I386_LOCK_H_ */