summaryrefslogtreecommitdiff
path: root/linux/memory.c
diff options
context:
space:
mode:
authorDaryll Strauss <daryll@users.sourceforge.net>1999-12-07 03:37:16 +0000
committerDaryll Strauss <daryll@users.sourceforge.net>1999-12-07 03:37:16 +0000
commite1dba5c3a73078dec24f07a6d685435677db94a4 (patch)
tree85df5e4de1dbbbe434e9359e8849325e68c3a79f /linux/memory.c
parentb6a28bfe98f2c89cfb91079bd3c7b63fb0144eb1 (diff)
Move Mesa to xc/extras Update to the latest Mesa 3.2 code Fix the Q3Demo
bugs (white railgun and texture mapping) Simplify driver texture mapping routines Fix device driver for 2.3 kernels Improve performance
Diffstat (limited to 'linux/memory.c')
-rw-r--r--linux/memory.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/linux/memory.c b/linux/memory.c
index b3fc4fca..af8d510b 100644
--- a/linux/memory.c
+++ b/linux/memory.c
@@ -1,6 +1,6 @@
/* memory.c -- Memory management wrappers for DRM -*- linux-c -*-
* Created: Thu Feb 4 14:00:34 1999 by faith@precisioninsight.com
- * Revised: Fri Aug 20 13:04:33 1999 by faith@precisioninsight.com
+ * Revised: Mon Dec 6 10:28:18 1999 by faith@precisioninsight.com
*
* Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
* All Rights Reserved.
@@ -42,7 +42,7 @@ typedef struct drm_mem_stats {
} drm_mem_stats_t;
static spinlock_t drm_mem_lock = SPIN_LOCK_UNLOCKED;
-static unsigned long drm_ram_available = 0;
+static unsigned long drm_ram_available = 0; /* In pages */
static unsigned long drm_ram_used = 0;
static drm_mem_stats_t drm_mem_stats[] = {
[DRM_MEM_DMA] = { "dmabufs" },
@@ -77,7 +77,12 @@ void drm_mem_init(void)
}
si_meminfo(&si);
+#if LINUX_VERSION_CODE < 0x020317
+ /* Changed to page count in 2.3.23 */
+ drm_ram_available = si.totalram >> PAGE_SHIFT;
+#else
drm_ram_available = si.totalram;
+#endif
drm_ram_used = 0;
}
@@ -95,10 +100,11 @@ static int _drm_mem_info(char *buf, char **start, off_t offset, int len,
" | outstanding \n");
DRM_PROC_PRINT("type alloc freed fail bytes freed"
" | allocs bytes\n\n");
- DRM_PROC_PRINT("%-9.9s %5d %5d %4d %10lu |\n",
- "system", 0, 0, 0, drm_ram_available);
- DRM_PROC_PRINT("%-9.9s %5d %5d %4d %10lu |\n",
- "locked", 0, 0, 0, drm_ram_used);
+ DRM_PROC_PRINT("%-9.9s %5d %5d %4d %10lu kB |\n",
+ "system", 0, 0, 0,
+ drm_ram_available << (PAGE_SHIFT - 10));
+ DRM_PROC_PRINT("%-9.9s %5d %5d %4d %10lu kB |\n",
+ "locked", 0, 0, 0, drm_ram_used >> 10);
DRM_PROC_PRINT("\n");
for (pt = drm_mem_stats; pt->name; pt++) {
DRM_PROC_PRINT("%-9.9s %5d %5d %4d %10lu %10lu | %6d %10ld\n",
@@ -207,7 +213,8 @@ unsigned long drm_alloc_pages(int order, int area)
unsigned int sz;
spin_lock(&drm_mem_lock);
- if (drm_ram_used > +(DRM_RAM_PERCENT * drm_ram_available) / 100) {
+ if ((drm_ram_used >> PAGE_SHIFT)
+ > (DRM_RAM_PERCENT * drm_ram_available) / 100) {
spin_unlock(&drm_mem_lock);
return 0;
}