Changeset 10897


Ignore:
Timestamp:
Sep 27, 2008, 6:53:37 AM (11 years ago)
Author:
gb
Message:

On Win32, use :stat.
No #_GetLocalProcessorInformation in win32 headers (it's a relatively
new function). Use GetProcessAffinityMask? to count CPUs in CPU-COUNT.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/level-1/linux-files.lisp

    r10878 r10897  
    323323      (values nil nil nil nil nil nil nil nil nil)))
    324324
     325#+win32-target
     326(defun %stat-values (result stat)
     327  (if (eql 0 (the fixnum result))
     328      (values
     329       t
     330       (pref stat :__stat64.st_mode)
     331       (pref stat :__stat64.st_size)
     332       (pref stat :__stat64.st_mtime)
     333       (pref stat :__stat64.st_ino)
     334       (pref stat :__stat64.st_uid)
     335       #$BUFSIZ
     336       (pref stat :__stat64.st_mtime)     ; ???
     337       (pref stat :__stat64.st_gid))
     338      (values nil nil nil nil nil nil nil nil nil)))
     339
    325340#+windows-target
    326341(defun windows-strip-trailing-slash (namestring)
     
    383398(defun %stat (name &optional link-p)
    384399  (declare (ignore link-p))
    385   (rlet ((stat  #+win64-target #>_stat64))
     400  (rlet ((stat  #+win64-target #>_stat64 #+win32-target #>__stat64))
    386401    (%%stat name stat)))
    387402
    388403(defun %fstat (fd)
    389   (rlet ((stat #+win64-target #>_stat64 #-win64-target :stat))
     404  (rlet ((stat #+win64-target #>_stat64 #+win32-target #>__stat64 #-windows-target :stat))
    390405    (%%fstat fd stat)))
    391406
     
    547562         ()
    548563      (%stack-block ((buf bufsize))
    549         (let* ((nchars (#_GetFullPathNameW path (ash bufsize -1) buf +null-ptr+)))
     564        (let* ((nchars (#_GetFullPathNameW path (ash bufsize -1) buf (%null-ptr))))
    550565          (if (eql 0 nchars)
    551566            (return nil)
     
    803818#+windows-target
    804819(defun %windows-error-string (error-number) 
    805   (rlet ((pbuffer :address +null-ptr+))
     820  (rlet ((pbuffer :address (%null-ptr)))
    806821    (if (eql 0
    807822             (#_FormatMessageW (logior #$FORMAT_MESSAGE_ALLOCATE_BUFFER
     
    809824                                       #$FORMAT_MESSAGE_IGNORE_INSERTS
    810825                                       #$FORMAT_MESSAGE_MAX_WIDTH_MASK)
    811                                +null-ptr+
     826                               (%null-ptr)
    812827                               (abs error-number)
    813828                               0                 ; default langid, more-or-less
    814829                               pbuffer
    815830                               0
    816                                +null-ptr+))
     831                               (%null-ptr)))
    817832      (format nil "Windows error ~d" (abs error-number))
    818833      (let* ((p (%get-ptr pbuffer))
     
    18381853                  1))))
    18391854            #+windows-target
    1840               (rlet ((bufsize #>DWORD 64))
    1841                 (loop
    1842                   (%stack-block ((info (pref bufsize #>DWORD)))
    1843                     (unless (eql #$FALSE (#_GetLogicalProcessorInformation
    1844                                           info bufsize))
    1845                       (let* ((count 0)
    1846                              (nbytes (pref bufsize #>DWORD)))
    1847                         (return
    1848                           (do* ((i 0 (+ i (record-length #>SYSTEM_LOGICAL_PROCESSOR_INFORMATION))))
    1849                                ((>= i nbytes) count)
    1850                             (when (eql (pref info #>SYSTEM_LOGICAL_PROCESSOR_INFORMATION.Relationship) #$RelationProcessorCore)
    1851                               (incf count))
    1852                             (%incf-ptr info (record-length #>SYSTEM_LOGICAL_PROCESSOR_INFORMATION))))))))))))
     1855            (rlet ((procmask #>DWORD_PTR)
     1856                   (sysmask #>DWORD_PTR))
     1857              (if (eql 0 (#_GetProcessAffinityMask (#_GetCurrentProcess) procmask sysmask))
     1858                1
     1859                (logcount (pref sysmask #>DWORD_PTR)))))))
    18531860
    18541861(def-load-pointers spin-count ()
Note: See TracChangeset for help on using the changeset viewer.