6 Miscellaneous Support
procedure
(list->cblock lst type [ expect-length #:malloc-mode malloc-mode]) → cpointer? lst : list? type : ctype? expect-length : (or/c exact-nonnegative-integer? #f) = #f malloc-mode : (or/c #f symbol?) = #f
If expect-length is not #f and not the same as (length lst), then an exception is raised instead of allocating memory.
If malloc-mode is not #f, it is provided as an additional argument to malloc.
Changed in version 7.7.0.2 of package base: Added the #:malloc-mode argument.
procedure
(vector->cblock vec type [ expect-length #:malloc-mode malloc-mode]) → cpointer? vec : vector? type : ctype? expect-length : (or/c exact-nonnegative-integer? #f) = #f malloc-mode : (or/c #f symbol?) = #f
Changed in version 7.7.0.2 of package base: Added the #:malloc-mode argument.
procedure
(vector->cpointer vec) → cpointer?
vec : vector?
procedure
(flvector->cpointer flvec) → cpointer?
flvec : flvector?
procedure
(saved-errno new-value) → void? new-value : exact-integer?
Changed in version 6.4.0.9 of package base: Added the one-argument variant.
procedure
(lookup-errno sym) → (or/c exact-integer? #f)
sym : symbol?
The recognized symbols currently consist of the 81 codes defined by IEEE Std 1003.1, 2013 Edition (also known as POSIX.1), including 'EINTR, 'EEXIST, and 'EAGAIN.
See also exn-classify-errno.
Changed in version 6.6.0.5 of package base: Relaxed the contract and added support for more symbols.
The conversion is roughly equivalent to
(let ([p (malloc from-type)]) (ptr-set! p from-type v) (ptr-ref p to-type))
If v is a cpointer, (cpointer-gcable? v) is true, and from-type and to-type are both based on _pointer or _gcpointer, then from-type is implicitly converted with _gcable to ensure that the result cpointer is treated as referring to memory that is managed by the garbage collector.
If v is a pointer with an offset component (e.g., from ptr-add), (cpointer-gcable? v) is true, and the result is a cpointer, then the result pointer has the same offset component as v. If (cpointer-gcable? v) is false, then any offset is folded into the pointer base for the result.
procedure
(cblock->list cblock type length) → list?
cblock : any/c type : ctype? length : exact-nonnegative-integer?
procedure
(cblock->vector cblock type length) → vector?
cblock : any/c type : ctype? length : exact-nonnegative-integer?