From: Cyrus H. <sl...@us...> - 2007-03-15 15:15:26
|
Update of /cvsroot/sbcl/sbcl/src/code In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv31457/src/code Modified Files: unix.lisp Log Message: 1.0.3.39: larger heap size for x86-64/darwin * removed darwin specific params for space locations. * modify gettimeofday of call on darwin x86-64 to not pass in a timezone pointer as this causes the gettimeofday syscall to occasionally fail. This is a temporary hack and should be fixed. Index: unix.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/unix.lisp,v retrieving revision 1.75 retrieving revision 1.76 diff -u -d -r1.75 -r1.76 --- unix.lisp 3 Mar 2007 18:28:43 -0000 1.75 +++ unix.lisp 15 Mar 2007 15:14:17 -0000 1.76 @@ -766,6 +766,21 @@ ;;; doesn't work, it returns NIL and the errno. #!-sb-fluid (declaim (inline unix-gettimeofday)) (defun unix-gettimeofday () + #!+(and x86-64 darwin) + (with-alien ((tv (struct timeval))) + ;; CLH: FIXME! This seems to be a MacOS bug, but on x86-64/darwin, + ;; gettimeofday occasionally fails. passing in a null pointer for + ;; the timezone struct seems to work around the problem. I can't + ;; find any instances in the SBCL where we actually ues the + ;; timezone values, so we just punt for the moment. + (syscall* ("gettimeofday" (* (struct timeval)) + (* (struct timezone))) + (values t + (slot tv 'tv-sec) + (slot tv 'tv-usec)) + (addr tv) + nil)) + #!-(and x86-64 darwin) (with-alien ((tv (struct timeval)) (tz (struct timezone))) (syscall* ("gettimeofday" (* (struct timeval)) |