foreign-c-libraries/.tmp/system/mosh/foreign/c/libc.scm

21 lines
919 B
Scheme

(define-c-library libc
'("stdlib.h" "stdio.h" "string.h")
libc-name
'((additional-versions ("0" "6"))))
(define-c-procedure c-malloc libc 'malloc 'pointer '(int))
(define-c-procedure c-free libc 'free 'void '(pointer))
(define-c-procedure c-strlen libc 'strlen 'int '(pointer))
(define-c-procedure c-memset-address->pointer libc 'memset 'pointer '(uint64 uint8 int))
;; FIXME uint64 does not work on Chibi
;(define-c-procedure c-memset-pointer->address libc 'memset 'uint64 '(pointer uint8 int))
(define-c-procedure c-memset-pointer->address libc 'memset 'int '(pointer uint8 int))
(define (make-c-null) (c-memset-address->pointer 0 0 0))
(define c-null?
(lambda (pointer)
(call-with-current-continuation
(lambda (k)
(with-exception-handler
(lambda (x) (k #f))
(lambda () (= (c-memset-pointer->address pointer 0 0) 0)))))))