Loading posix/early.lisp +12 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,18 @@ (object :initarg :object :reader errno-object) (function-name :initarg :function-name :reader function-name))) ;; NOTE: this is an ugly type-punning. An alternative is to compute ;; this value from (cffi:foreign-type-size :uintptr), but it requires ;; also knowing how many bits are in a byte. (defconstant +most-positive-uintptr+ (with-foreign-object (p :intptr) (setf (mem-ref p :intptr) -1) (mem-ref p :uintptr))) ;; on some systems, map-failed is groveled as -1 :( #-windows (defvar *map-failed-pointer* (make-pointer (logand map-failed +most-positive-uintptr+))) ;;; FIXME: undocumented in cffi-grovel. (defun make-from-pointer-function-name (type-name) (format-symbol t "~A-~A-~A-~A" '#:make type-name '#:from '#:pointer)) Loading posix/wrappers.lisp +4 −6 Original line number Diff line number Diff line Loading @@ -60,9 +60,8 @@ #-windows (defwrapper "mmap" ("void*" (errno-wrapper :long :error-predicate (lambda (p) (= p map-failed)) :return-filter make-pointer)) :pointer :error-predicate (lambda (p) (pointer-eq p *map-failed-pointer*)))) (start :pointer) (length ("size_t" size)) (prot :int) Loading @@ -72,9 +71,8 @@ #+linux (defwrapper "mremap" ("void*" (errno-wrapper :long :error-predicate (lambda (p) (= p map-failed)) :return-filter make-pointer)) :pointer :error-predicate (lambda (p) (pointer-eq p *map-failed-pointer*)))) (old-address :pointer) (old-size ("size_t" size)) (new-size ("size_t" size)) Loading Loading
posix/early.lisp +12 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,18 @@ (object :initarg :object :reader errno-object) (function-name :initarg :function-name :reader function-name))) ;; NOTE: this is an ugly type-punning. An alternative is to compute ;; this value from (cffi:foreign-type-size :uintptr), but it requires ;; also knowing how many bits are in a byte. (defconstant +most-positive-uintptr+ (with-foreign-object (p :intptr) (setf (mem-ref p :intptr) -1) (mem-ref p :uintptr))) ;; on some systems, map-failed is groveled as -1 :( #-windows (defvar *map-failed-pointer* (make-pointer (logand map-failed +most-positive-uintptr+))) ;;; FIXME: undocumented in cffi-grovel. (defun make-from-pointer-function-name (type-name) (format-symbol t "~A-~A-~A-~A" '#:make type-name '#:from '#:pointer)) Loading
posix/wrappers.lisp +4 −6 Original line number Diff line number Diff line Loading @@ -60,9 +60,8 @@ #-windows (defwrapper "mmap" ("void*" (errno-wrapper :long :error-predicate (lambda (p) (= p map-failed)) :return-filter make-pointer)) :pointer :error-predicate (lambda (p) (pointer-eq p *map-failed-pointer*)))) (start :pointer) (length ("size_t" size)) (prot :int) Loading @@ -72,9 +71,8 @@ #+linux (defwrapper "mremap" ("void*" (errno-wrapper :long :error-predicate (lambda (p) (= p map-failed)) :return-filter make-pointer)) :pointer :error-predicate (lambda (p) (pointer-eq p *map-failed-pointer*)))) (old-address :pointer) (old-size ("size_t" size)) (new-size ("size_t" size)) Loading