Changeset 14541
- Timestamp:
- Jan 1, 2011, 6:12:48 PM (14 years ago)
- File:
-
- 1 edited
-
trunk/source/level-0/l0-misc.lisp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/level-0/l0-misc.lisp
r14540 r14541 890 890 ;; That wasn't so bad, was it ? We have the spinlock now. 891 891 (setf (%get-signed-natural ptr target::rwlock.state) 1) 892 (setf (%get-signed-long write-signal) -1) 892 893 (%unlock-futex ptr) 893 894 (%set-object ptr target::rwlock.writer tcr) … … 896 897 t) 897 898 (incf (%get-natural ptr target::rwlock.blocked-writers)) 898 (let* ((waitval (%get-signed-long write-signal 0)))899 (let* ((waitval -1)) 899 900 (%unlock-futex ptr) 900 901 (with-process-whostate ((rwlock-write-whostate lock)) … … 964 965 (setf (%get-signed-natural ptr target::rwlock.state) 965 966 (the fixnum (1- state))) 967 (setf (%get-signed-long reader-signal) -1) ; can happen multiple times, but that's harmless 966 968 (%unlock-futex ptr) 967 969 (if flag … … 970 972 (declare (fixnum state)) 971 973 (incf (%get-natural ptr target::rwlock.blocked-readers)) 972 (let* ((waitval (%get-signed-long reader-signal 0)))974 (let* ((waitval -1)) 973 975 (%unlock-futex ptr) 974 976 (let* ((*interrupt-level* level)) … … 1067 1069 (if (> nreaders 0) 1068 1070 (setq signal reader-signal wakeup #$INT_MAX))))) 1069 (when signal ( incf (%get-signed-long signal 0)))1071 (when signal (setf (%get-signed-long signal) 0)) 1070 1072 (%unlock-futex ptr) 1071 1073 (when signal (futex-wake signal wakeup))
Note:
See TracChangeset
for help on using the changeset viewer.
