X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fx86-vm.lisp;h=bd1935f08b43366ac7d2ad5ed5fac50f219628b1;hb=56a972e201d117a8d5d769527f2bafd23cba7de9;hp=203b2bb7dce50030db2ff89852f120dc8814c705;hpb=05525d3a5906d7a89fcb689c26177732493c40ce;p=sbcl.git diff --git a/src/code/x86-vm.lisp b/src/code/x86-vm.lisp index 203b2bb..bd1935f 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