X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fx86-vm.lisp;h=d49f487cbc3c332d078c4d24dad0fa83b5e4c22b;hb=15d6e7c9a2c3234f95dfe278046fa2fee1b0c007;hp=203b2bb7dce50030db2ff89852f120dc8814c705;hpb=05525d3a5906d7a89fcb689c26177732493c40ce;p=sbcl.git diff --git a/src/code/x86-vm.lisp b/src/code/x86-vm.lisp index 203b2bb..d49f487 100644 --- a/src/code/x86-vm.lisp +++ b/src/code/x86-vm.lisp @@ -41,10 +41,25 @@ "Return a string describing the type of the local machine." "X86") -(defun machine-version () - #!+sb-doc - "Return a string describing the version of the local machine." - "X86") +;;; arch-specific support for CL:MACHINE-VERSION, defined OAOO elsewhere +(defun get-machine-version () + #!+linux + (with-open-file (stream "/proc/cpuinfo" + ;; Even on Linux it's an option to build + ;; kernels without /proc filesystems, so + ;; degrade gracefully. + :if-does-not-exist nil) + (loop with line while (setf line (read-line stream nil)) + ;; The field "model name" exists on kernel 2.4.21-rc6-ac1 + ;; anyway, with values e.g. + ;; "AMD Athlon(TM) XP 2000+" + ;; "Intel(R) Pentium(R) M processor 1300MHz" + ;; which seem comparable to the information in the example + ;; in the MACHINE-VERSION page of the ANSI spec. + when (eql (search "model name" line) 0) + return (string-trim " " (subseq line (1+ (position #\: line)))))) + #!-linux + nil) ;;;; :CODE-OBJECT fixups @@ -54,8 +69,7 @@ (declaim (inline adjust-fixup-array)) (defun adjust-fixup-array (array size) - (let ((length (length array)) - (new (make-array size :element-type '(unsigned-byte 32)))) + (let ((new (make-array size :element-type '(unsigned-byte 32)))) (replace new array) new))