]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/ppc/locks.h
xnu-1504.15.3.tar.gz
[apple/xnu.git] / osfmk / ppc / locks.h
index b47ab06fbd43f97845bb384cdb8d45e88cf4d8f4..639a820a80ca152a2bb1dc3245e4778a751ad181 100644 (file)
@@ -1,14 +1,19 @@
 /*
  * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
  *
- * @APPLE_LICENSE_HEADER_START@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ * 
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
  * 
  * The Original Code and all software distributed under the License are
  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
@@ -18,7 +23,7 @@
  * Please see the License for the specific language governing rights and
  * limitations under the License.
  * 
- * @APPLE_LICENSE_HEADER_END@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
 
 #ifndef        _PPC_LOCKS_H_
@@ -108,10 +113,11 @@ typedef struct {
 } lck_mtx_stat_t;
 
 typedef struct _lck_mtx_ext_ {
-       lck_mtx_t                       lck_mtx;
+       lck_mtx_t               lck_mtx;
        struct _lck_grp_        *lck_mtx_grp;
        unsigned int            lck_mtx_attr;
        lck_mtx_deb_t           lck_mtx_deb;
+       /* Unused on PowerPC */
        lck_mtx_stat_t          lck_mtx_stat;
 } lck_mtx_ext_t;
 
@@ -125,8 +131,13 @@ typedef struct _lck_mtx_ext_ {
 typedef struct {
     unsigned int                opaque[3];
 } lck_mtx_t;
+
+typedef struct {
+    unsigned int                opaque[16];
+} lck_mtx_ext_t;
 #else
-typedef struct __lck_mtx_t__   lck_mtx_t;
+typedef struct __lck_mtx_t__           lck_mtx_t;
+typedef struct __lck_mtx_ext_t__       lck_mtx_ext_t;
 #endif
 #endif
 
@@ -135,7 +146,8 @@ typedef struct {
        union {
                struct {
                        unsigned int                    lck_rwd_shared_cnt:16,  /* No. of shared granted request */
-                                                                       lck_rwd_pad16:12,               /* padding */
+                                                                       lck_rwd_priv_excl:1,    /* priority for Writer */
+                                                                       lck_rwd_pad17:11,               /* padding */
                                                                        lck_rwd_want_excl:1,    /* Writer is waiting, or locked for write */
                                                                        lck_rwd_want_upgrade:1, /* Read-to-write upgrade waiting */
                                                                        lck_rwd_waiting:1,              /* Someone is sleeping on lock */
@@ -155,6 +167,7 @@ typedef struct {
 #define        lck_rw_want_upgrade             lck_rw_sw.lck_rwd.lck_rwd_want_upgrade
 #define        lck_rw_want_excl                lck_rw_sw.lck_rwd.lck_rwd_want_excl
 #define        lck_rw_waiting                  lck_rw_sw.lck_rwd.lck_rwd_waiting
+#define        lck_rw_priv_excl                lck_rw_sw.lck_rwd.lck_rwd_priv_excl
 #define        lck_rw_shared_cnt               lck_rw_sw.lck_rwd.lck_rwd_shared_cnt
 
 #define lck_rw_tag                             lck_rw_sw.lck_rwi.lck_rwi_tag
@@ -175,7 +188,7 @@ typedef struct {
 } lck_rw_stat_t;
 
 typedef struct _lck_rw_ext_ {
-       lck_rw_t                        lck_rw;
+       lck_rw_t                lck_rw;
        struct _lck_grp_        *lck_rw_grp;
        unsigned int            lck_rw_attr;
        lck_rw_deb_t            lck_rw_deb;