|
From: | felix |
Subject: | Re: [Chicken-users] getloadavg in chicken? |
Date: | Thu, 08 Jul 2004 10:21:04 +0200 |
User-agent: | Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6) Gecko/20040113 |
address@hidden wrote:
I am not familiar with the C interface, so the following code contains a bug (because conversion from C double to Scheme flonum is missing in get-load-average? How?) #> static double C_get_load_average(__scheme_value i) { double avg; getloadavg(&avg, 1); return avg; } <# (define (get-load-average value) (let ((avg (##core#inline "C_get_load_average" value))) ;(write avg)(newline) avg))
;; Not-so-quick-but-dirty: (require-extension srfi-4) #>? int getloadavg(double *, int); <# (define vec (f64vector 0)) (getloadavg vec 1) (print (f64vector-ref vec 0)) ;; Better: (define get-load-average (foreign-lambda* double () "double avg;" "if(getloadavg(&avg, 1) != 1) return(0);" "else return(avg);") ) cheers, felix
[Prev in Thread] | Current Thread | [Next in Thread] |