]> 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 ab878b6d432ce4b497ca523b5ba1903e5a57a74c..639a820a80ca152a2bb1dc3245e4778a751ad181 100644 (file)
@@ -1,23 +1,29 @@
 /*
  * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
  *
- * @APPLE_LICENSE_HEADER_START@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
- * The contents of this file constitute Original Code as defined in and
- * are subject to the Apple Public Source License Version 1.1 (the
- * "License").  You may not use this file except in compliance with the
- * License.  Please obtain a copy of the License at
- * http://www.apple.com/publicsource and read it before using this file.
+ * 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. 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.
  * 
- * This Original Code and all software distributed under the License are
- * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * 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
  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
- * License for the specific language governing rights and limitations
- * under the License.
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * 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_
@@ -107,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;
 
@@ -124,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
 
@@ -134,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 */
@@ -154,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
@@ -174,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;