X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fgeneric%2Fobjdef.lisp;h=b013c6aa44a2013ce6efafc4f01d55de66caf64c;hb=1600081cf1b71b3d0e2e40de1c1c124a3a4fd40c;hp=88dc800c94b1b15ae4325d60d85a43c8a6a14850;hpb=62b6c13eaaefa20b790e10a28d292e1821cd4446;p=sbcl.git diff --git a/src/compiler/generic/objdef.lisp b/src/compiler/generic/objdef.lisp index 88dc800..b013c6a 100644 --- a/src/compiler/generic/objdef.lisp +++ b/src/compiler/generic/objdef.lisp @@ -395,6 +395,20 @@ (real :c-type "double" :length #!-x86-64 2 #!+x86-64 1) (imag :c-type "double" :length #!-x86-64 2 #!+x86-64 1)) +#!+(and sb-lutex sb-thread) +(define-primitive-object (lutex + :lowtag other-pointer-lowtag + :widetag lutex-widetag + :alloc-trans %make-lutex) + (gen :c-type "long" :length 1) + (live :c-type "long" :length 1) + (next :c-type "struct lutex *" :length 1) + (prev :c-type "struct lutex *" :length 1) + (mutex :c-type "pthread_mutex_t *" + :length 1) + (condition-variable :c-type "pthread_cond_t *" + :length 1)) + ;;; this isn't actually a lisp object at all, it's a c structure that lives ;;; in c-land. However, we need sight of so many parts of it from Lisp that ;;; it makes sense to define it here anyway, so that the GENESIS machinery @@ -421,8 +435,7 @@ ;; starting, running, suspended, dead (state :c-type "volatile lispobj") (tls-cookie) ; on x86, the LDT index - #!+(or x86 x86-64) (pseudo-atomic-atomic) - #!+(or x86 x86-64) (pseudo-atomic-interrupted) + #!+(or x86 x86-64) (pseudo-atomic-bits) (interrupt-data :c-type "struct interrupt_data *" :length #!+alpha 2 #!-alpha 1) (interrupt-contexts :c-type "os_context_t *" :rest-p t))