Skip to content

Commit

Permalink
posix-clocks-generic: re-add removed functions, because why not
Browse files Browse the repository at this point in the history
  • Loading branch information
aconchillo committed Dec 21, 2022
1 parent c744201 commit 203a406
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 8 deletions.
1 change: 1 addition & 0 deletions fibers/posix-clocks-darwin.scm
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
(lambda (ret errno)
(unless (zero? ret) (error (strerror errno)))
(timespec->nsec buf))))))

(define (nsec->timespec nsec)
(make-c-struct struct-timespec
(list (quotient nsec #e1e9) (modulo nsec #e1e9))))
Expand Down
36 changes: 28 additions & 8 deletions fibers/posix-clocks-generic.scm
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,16 @@
(define CLOCK_REALTIME_COARSE 5)
(define CLOCK_MONOTONIC_COARSE 6)

(define clock-getcpuclockid
(let* ((ptr (dynamic-pointer "clock_getcpuclockid" exe))
(proc (pointer->procedure int ptr (list pid-t '*)
#:return-errno? #t)))
(lambda* (pid #:optional (buf (make-bytevector (sizeof clockid-t))))
(call-with-values (lambda () (proc pid (bytevector->pointer buf)))
(lambda (ret errno)
(unless (zero? ret) (error (strerror errno)))
(bytevector-s32-native-ref buf 0))))))

(define pthread-self
(let* ((ptr (dynamic-pointer "pthread_self" exe))
(proc (pointer->procedure pthread-t ptr '())))
Expand All @@ -62,14 +72,15 @@
(unless (zero? ret) (error (strerror errno)))
(bytevector-s32-native-ref buf 0))))))

(define (nsec->timespec nsec)
(make-c-struct struct-timespec
(list (quotient nsec #e1e9) (modulo nsec #e1e9))))

(define (timespec->nsec ts)
(match (parse-c-struct ts struct-timespec)
((sec nsec)
(+ (* sec #e1e9) nsec))))
(define clock-getres
(let* ((ptr (dynamic-pointer "clock_getres" exe))
(proc (pointer->procedure int ptr (list clockid-t '*)
#:return-errno? #t)))
(lambda* (clockid #:optional (buf (nsec->timespec 0)))
(call-with-values (lambda () (proc clockid buf))
(lambda (ret errno)
(unless (zero? ret) (error (strerror errno)))
(timespec->nsec buf))))))

(define clock-gettime
(let* ((ptr (dynamic-pointer "clock_gettime" exe))
Expand All @@ -81,6 +92,15 @@
(unless (zero? ret) (error (strerror errno)))
(timespec->nsec buf))))))

(define (nsec->timespec nsec)
(make-c-struct struct-timespec
(list (quotient nsec #e1e9) (modulo nsec #e1e9))))

(define (timespec->nsec ts)
(match (parse-c-struct ts struct-timespec)
((sec nsec)
(+ (* sec #e1e9) nsec))))

(define clock-nanosleep
(let* ((ptr (dynamic-pointer "clock_nanosleep" exe))
(proc (pointer->procedure int ptr (list clockid-t int '* '*))))
Expand Down

0 comments on commit 203a406

Please sign in to comment.