From d109126c4bd568c737b02198e78f4774f1044284 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 25 Aug 2009 18:19:34 -0500 Subject: [PATCH] more structs --- basis/windows/kernel32/kernel32.factor | 60 ++++++++++++------------ extra/system-info/windows/nt/nt.factor | 21 +++++---- extra/system-info/windows/windows.factor | 8 ++-- 3 files changed, 45 insertions(+), 44 deletions(-) diff --git a/basis/windows/kernel32/kernel32.factor b/basis/windows/kernel32/kernel32.factor index 2e8be04717..50a03945f3 100755 --- a/basis/windows/kernel32/kernel32.factor +++ b/basis/windows/kernel32/kernel32.factor @@ -267,42 +267,42 @@ STRUCT: PROCESS_INFORMATION { dwProcessId DWORD } { dwThreadId DWORD } ; -C-STRUCT: SYSTEM_INFO - { "DWORD" "dwOemId" } - { "DWORD" "dwPageSize" } - { "LPVOID" "lpMinimumApplicationAddress" } - { "LPVOID" "lpMaximumApplicationAddress" } - { "DWORD_PTR" "dwActiveProcessorMask" } - { "DWORD" "dwNumberOfProcessors" } - { "DWORD" "dwProcessorType" } - { "DWORD" "dwAllocationGranularity" } - { "WORD" "wProcessorLevel" } - { "WORD" "wProcessorRevision" } ; +STRUCT: SYSTEM_INFO + { dwOemId DWORD } + { dwPageSize DWORD } + { lpMinimumApplicationAddress LPVOID } + { lpMaximumApplicationAddress LPVOID } + { dwActiveProcessorMask DWORD_PTR } + { dwNumberOfProcessors DWORD } + { dwProcessorType DWORD } + { dwAllocationGranularity DWORD } + { wProcessorLevel WORD } + { wProcessorRevision WORD } ; TYPEDEF: void* LPSYSTEM_INFO -C-STRUCT: MEMORYSTATUS - { "DWORD" "dwLength" } - { "DWORD" "dwMemoryLoad" } - { "SIZE_T" "dwTotalPhys" } - { "SIZE_T" "dwAvailPhys" } - { "SIZE_T" "dwTotalPageFile" } - { "SIZE_T" "dwAvailPageFile" } - { "SIZE_T" "dwTotalVirtual" } - { "SIZE_T" "dwAvailVirtual" } ; +STRUCT: MEMORYSTATUS + { dwLength DWORD } + { dwMemoryLoad DWORD } + { dwTotalPhys SIZE_T } + { dwAvailPhys SIZE_T } + { dwTotalPageFile SIZE_T } + { dwAvailPageFile SIZE_T } + { dwTotalVirtual SIZE_T } + { dwAvailVirtual SIZE_T } ; TYPEDEF: void* LPMEMORYSTATUS -C-STRUCT: MEMORYSTATUSEX - { "DWORD" "dwLength" } - { "DWORD" "dwMemoryLoad" } - { "DWORDLONG" "ullTotalPhys" } - { "DWORDLONG" "ullAvailPhys" } - { "DWORDLONG" "ullTotalPageFile" } - { "DWORDLONG" "ullAvailPageFile" } - { "DWORDLONG" "ullTotalVirtual" } - { "DWORDLONG" "ullAvailVirtual" } - { "DWORDLONG" "ullAvailExtendedVirtual" } ; +STRUCT: MEMORYSTATUSEX + { dwLength DWORD } + { dwMemoryLoad DWORD } + { ullTotalPhys DWORDLONG } + { ullAvailPhys DWORDLONG } + { ullTotalPageFile DWORDLONG } + { ullAvailPageFile DWORDLONG } + { ullTotalVirtual DWORDLONG } + { ullAvailVirtual DWORDLONG } + { ullAvailExtendedVirtual DWORDLONG } ; TYPEDEF: void* LPMEMORYSTATUSEX diff --git a/extra/system-info/windows/nt/nt.factor b/extra/system-info/windows/nt/nt.factor index 3e0cffe71d..a6b4c8176f 100755 --- a/extra/system-info/windows/nt/nt.factor +++ b/extra/system-info/windows/nt/nt.factor @@ -3,37 +3,38 @@ USING: alien alien.c-types alien.strings kernel libc math namespaces system-info.backend system-info.windows windows windows.advapi32 -windows.kernel32 system byte-arrays windows.errors ; +windows.kernel32 system byte-arrays windows.errors +classes classes.struct ; IN: system-info.windows.nt M: winnt cpus ( -- n ) system-info SYSTEM_INFO-dwNumberOfProcessors ; : memory-status ( -- MEMORYSTATUSEX ) - "MEMORYSTATUSEX" - "MEMORYSTATUSEX" heap-size over set-MEMORYSTATUSEX-dwLength + "MEMORYSTATUSEX" + dup class heap-size >>dwLength dup GlobalMemoryStatusEx win32-error=0/f ; M: winnt memory-load ( -- n ) - memory-status MEMORYSTATUSEX-dwMemoryLoad ; + memory-status dwMemoryLoad>> ; M: winnt physical-mem ( -- n ) - memory-status MEMORYSTATUSEX-ullTotalPhys ; + memory-status ullTotalPhys>> ; M: winnt available-mem ( -- n ) - memory-status MEMORYSTATUSEX-ullAvailPhys ; + memory-status ullAvailPhys>> ; M: winnt total-page-file ( -- n ) - memory-status MEMORYSTATUSEX-ullTotalPageFile ; + memory-status ullTotalPageFile>> ; M: winnt available-page-file ( -- n ) - memory-status MEMORYSTATUSEX-ullAvailPageFile ; + memory-status ullAvailPageFile>> ; M: winnt total-virtual-mem ( -- n ) - memory-status MEMORYSTATUSEX-ullTotalVirtual ; + memory-status ullTotalVirtual>> ; M: winnt available-virtual-mem ( -- n ) - memory-status MEMORYSTATUSEX-ullAvailVirtual ; + memory-status ullAvailVirtual>> ; : computer-name ( -- string ) MAX_COMPUTERNAME_LENGTH 1 + diff --git a/extra/system-info/windows/windows.factor b/extra/system-info/windows/windows.factor index 4d23430131..34915d0b7b 100755 --- a/extra/system-info/windows/windows.factor +++ b/extra/system-info/windows/windows.factor @@ -7,18 +7,18 @@ system alien.strings windows.errors ; IN: system-info.windows : system-info ( -- SYSTEM_INFO ) - "SYSTEM_INFO" [ GetSystemInfo ] keep ; + SYSTEM_INFO [ GetSystemInfo ] keep ; : page-size ( -- n ) - system-info SYSTEM_INFO-dwPageSize ; + system-info dwPageSize>> ; ! 386, 486, 586, 2200 (IA64), 8664 (AMD_X8664) : processor-type ( -- n ) - system-info SYSTEM_INFO-dwProcessorType ; + system-info dwProcessorType>> ; ! 0 = x86, 6 = Intel Itanium, 9 = x64 (AMD or Intel), 10 = WOW64, 0xffff = Unk : processor-architecture ( -- n ) - system-info SYSTEM_INFO-dwOemId HEX: ffff0000 bitand ; + system-info dwOemId>> HEX: ffff0000 bitand ; : os-version ( -- os-version ) "OSVERSIONINFO"