Browse Source

SDL_cpuinfo.c: add os/2 support to SDL_GetCPUCount() and SDL_GetSystemRAM().

Sam Lantinga 8 years ago
parent
commit
b821ded96c
1 changed files with 20 additions and 0 deletions
  1. 20 0
      src/cpuinfo/SDL_cpuinfo.c

+ 20 - 0
src/cpuinfo/SDL_cpuinfo.c

@@ -27,6 +27,13 @@
 #if defined(__WIN32__)
 #if defined(__WIN32__)
 #include "../core/windows/SDL_windows.h"
 #include "../core/windows/SDL_windows.h"
 #endif
 #endif
+#if defined(__OS2__)
+#define INCL_DOS
+#include <os2.h>
+#ifndef QSV_NUMPROCESSORS
+#define QSV_NUMPROCESSORS 26
+#endif
+#endif
 
 
 /* CPU feature detection for SDL */
 /* CPU feature detection for SDL */
 
 
@@ -418,6 +425,12 @@ SDL_GetCPUCount(void)
             SDL_CPUCount = info.dwNumberOfProcessors;
             SDL_CPUCount = info.dwNumberOfProcessors;
         }
         }
 #endif
 #endif
+#ifdef __OS2__
+        if (SDL_CPUCount <= 0) {
+            DosQuerySysInfo(QSV_NUMPROCESSORS, QSV_NUMPROCESSORS,
+                            &SDL_CPUCount, sizeof(SDL_CPUCount) );
+        }
+#endif
 #endif
 #endif
         /* There has to be at least 1, right? :) */
         /* There has to be at least 1, right? :) */
         if (SDL_CPUCount <= 0) {
         if (SDL_CPUCount <= 0) {
@@ -719,6 +732,13 @@ SDL_GetSystemRAM(void)
             }
             }
         }
         }
 #endif
 #endif
+#ifdef __OS2__
+        if (SDL_SystemRAM <= 0) {
+            Uint32 sysram = 0;
+            DosQuerySysInfo(QSV_TOTPHYSMEM, QSV_TOTPHYSMEM, &sysram, 4);
+            SDL_SystemRAM = (int) (sysram / 0x100000U);
+        }
+#endif
 #endif
 #endif
     }
     }
     return SDL_SystemRAM;
     return SDL_SystemRAM;