- Timestamp:
- Oct 12, 2007, 2:22:59 AM (17 years ago)
- File:
-
- 1 edited
-
branches/working-0710/ccl/level-0/l0-aprims.lisp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/working-0710/ccl/level-0/l0-aprims.lisp
r6559 r7390 22 22 ;;; This weak list is used to track semaphores as well as locks. 23 23 (defvar %system-locks% nil) 24 (setf %system-locks% (%cons-population nil)) 24 25 25 26 26 (defun record-system-lock (l) … … 123 123 :address)))) 124 124 125 125 (defun %make-rwlock-ptr () 126 (record-system-lock 127 (%setf-macptr 128 (make-gcable-macptr $flags_DisposeRwLock) 129 (ff-call (%kernel-import target::kernel-import-rwlock-new) 130 :address)))) 126 131 127 132 (defun make-recursive-lock () … … 142 147 (report-bad-arg r 'recursive-lock))) 143 148 144 149 (defun read-write-lock-ptr (rw) 150 (if (and (eq target::subtag-lock (typecode rw)) 151 (eq (%svref rw target::lock.kind-cell) 'read-write-lock)) 152 (%svref rw target::lock._value-cell) 153 (report-bad-arg rw 'read-write-lock))) 145 154 146 155 (defun make-read-write-lock () 147 156 "Create and return a read-write lock, which can be used for 148 157 synchronization between threads." 149 (gvector :lock 0'read-write-lock 0 nil))158 (gvector :lock (%make-rwlock-ptr) 'read-write-lock 0 nil)) 150 159 151 160
Note:
See TracChangeset
for help on using the changeset viewer.
