Lots of clean-ups. Replace __inline__ with INLINE macro. Use the
authorBrian Paul <brian.paul@tungstengraphics.com>
Tue, 18 Oct 2005 15:01:19 +0000 (15:01 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Tue, 18 Oct 2005 15:01:19 +0000 (15:01 +0000)
_mesa_calloc(), _mesa_free() functions.  Clean-up formatting, doxygen-style
comments.

src/mesa/main/execmem.c
src/mesa/main/mm.c
src/mesa/main/mm.h

index 17ad06c90a4e7e5e2eaac1da5056bee16b727587..89deaafad3aa11cba3aa35ce87d1237bf6a6565f 100644 (file)
@@ -1,3 +1,36 @@
+/*
+ * Mesa 3-D graphics library
+ * Version:  6.5
+ *
+ * Copyright (C) 1999-2005  Brian Paul   All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+/**
+ * \file exemem.c
+ * Functions for allocating executable memory.
+ *
+ * \author Keith Whitwell
+ */
+
+
 #include "imports.h"
 #include "glthread.h"
 
@@ -5,9 +38,15 @@
 
 #ifdef __linux__
 
+/*
+ * Allocate a large block of memory which can hold code then dole it out
+ * in pieces by means of the generic memory manager code.
+*/
+
+
 #include <unistd.h>
 #include <sys/mman.h>
-#include <mm.h>
+#include "mm.h"
 
 #define EXEC_HEAP_SIZE (128*1024)
 
@@ -16,7 +55,9 @@ _glthread_DECLARE_STATIC_MUTEX(exec_mutex);
 static memHeap_t *exec_heap = NULL;
 static unsigned char *exec_mem = NULL;
 
-static void init_heap( void )
+
+static void
+init_heap(void)
 {
    if (!exec_heap)
       exec_heap = mmInit( 0, EXEC_HEAP_SIZE );
@@ -29,7 +70,7 @@ static void init_heap( void )
 
 
 void *
-_mesa_exec_malloc( GLuint size )
+_mesa_exec_malloc(GLuint size)
 {
    PMemBlock block = NULL;
    void *addr = NULL;
@@ -50,6 +91,7 @@ _mesa_exec_malloc( GLuint size )
    
    return addr;
 }
+
  
 void 
 _mesa_exec_free(void *addr)
@@ -66,13 +108,19 @@ _mesa_exec_free(void *addr)
    _glthread_UNLOCK_MUTEX(exec_mutex);
 }
 
+
 #else
 
+/*
+ * Just use regular memory.
+ */
+
 void *
-_mesa_exec_malloc( GLuint size )
+_mesa_exec_malloc(GLuint size)
 {
    return _mesa_malloc( size );
 }
+
  
 void 
 _mesa_exec_free(void *addr)
@@ -80,4 +128,5 @@ _mesa_exec_free(void *addr)
    _mesa_free(addr);
 }
 
+
 #endif
index 14563b2591c1359c58687ee6321359c59b6f8eb5..e4c96821732d03da9d05166939f9d100e8a09b3e 100644 (file)
  * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  *
  */
-/* $XFree86: xc/lib/GL/mesa/src/drv/common/mm.c,v 1.4 2002/10/30 12:51:27 alanh Exp $ */
-
-#include <stdlib.h>
-#include <stdio.h>
 
 #include "mm.h"
 
 
-void mmDumpMemInfo( memHeap_t *heap )
+void
+mmDumpMemInfo(const memHeap_t *heap)
 {
-   TMemBlock *p;
+   const TMemBlock *p;
 
    fprintf(stderr, "Memory heap %p:\n", (void *)heap);
    if (heap == 0) {
@@ -48,34 +45,37 @@ void mmDumpMemInfo( memHeap_t *heap )
    fprintf(stderr, "End of memory blocks\n");
 }
 
-memHeap_t *mmInit(int ofs,
-                 int size)
+memHeap_t *
+mmInit(int ofs, int size)
 {
    PMemBlock blocks;
   
    if (size <= 0) {
       return NULL;
    }
-   blocks = (TMemBlock *) calloc(1,sizeof(TMemBlock));
+   blocks = (TMemBlock *) _mesa_calloc(sizeof(TMemBlock));
    if (blocks) {
       blocks->ofs = ofs;
       blocks->size = size;
       blocks->free = 1;
       return (memHeap_t *)blocks;
-   } else
+   }
+   else {
       return NULL;
+   }
 }
 
 
-static TMemBlock* SliceBlock(TMemBlock *p, 
-                            int startofs, int size, 
-                            int reserved, int alignment)
+static TMemBlock *
+SliceBlock(TMemBlock *p, 
+           int startofs, int size, 
+           int reserved, int alignment)
 {
    TMemBlock *newblock;
 
    /* break left */
    if (startofs > p->ofs) {
-      newblock = (TMemBlock*) calloc(1,sizeof(TMemBlock));
+      newblock = (TMemBlock*) _mesa_calloc(sizeof(TMemBlock));
       if (!newblock)
         return NULL;
       newblock->ofs = startofs;
@@ -89,7 +89,7 @@ static TMemBlock* SliceBlock(TMemBlock *p,
 
    /* break right */
    if (size < p->size) {
-      newblock = (TMemBlock*) calloc(1,sizeof(TMemBlock));
+      newblock = (TMemBlock*) _mesa_calloc(sizeof(TMemBlock));
       if (!newblock)
         return NULL;
       newblock->ofs = startofs + size;
@@ -107,7 +107,9 @@ static TMemBlock* SliceBlock(TMemBlock *p,
    return p;
 }
 
-PMemBlock mmAllocMem( memHeap_t *heap, int size, int align2, int startSearch)
+
+PMemBlock
+mmAllocMem(memHeap_t *heap, int size, int align2, int startSearch)
 {
    int mask,startofs,endofs;
    TMemBlock *p;
@@ -136,7 +138,9 @@ PMemBlock mmAllocMem( memHeap_t *heap, int size, int align2, int startSearch)
    return p;
 }
 
-PMemBlock mmFindBlock( memHeap_t *heap, int start)
+
+PMemBlock
+mmFindBlock(memHeap_t *heap, int start)
 {
    TMemBlock *p = (TMemBlock *)heap;
 
@@ -151,19 +155,22 @@ PMemBlock mmFindBlock( memHeap_t *heap, int start)
 }
 
 
-static __inline__ int Join2Blocks(TMemBlock *p)
+static INLINE int
+Join2Blocks(TMemBlock *p)
 {
+   /* XXX there should be some assertions here */
    if (p->free && p->next && p->next->free) {
       TMemBlock *q = p->next;
       p->size += q->size;
       p->next = q->next;
-      free(q);
+      _mesa_free(q);
       return 1;
    }
    return 0;
 }
 
-int mmFreeMem(PMemBlock b)
+int
+mmFreeMem(PMemBlock b)
 {
    TMemBlock *p,*prev;
 
@@ -196,16 +203,18 @@ int mmFreeMem(PMemBlock b)
 }
 
 
-void mmDestroy(memHeap_t *heap)
+void
+mmDestroy(memHeap_t *heap)
 {
-   TMemBlock *p,*q;
+   TMemBlock *p;
 
    if (!heap)
       return;
-   p = (TMemBlock *)heap;
+
+   p = (TMemBlock *) heap;
    while (p) {
-      q = p->next;
-      free(p);
-      p = q;
+      TMemBlock *next = p->next;
+      _mesa_free(p);
+      p = next;
    }
 }
index 83a4ac8c74d99dbf3260113d75e2fb6b636546c8..33c986b4c7d5cab5012a9641c183d5df761ee797 100644 (file)
  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 
  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 
  * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
  */
 
-#ifndef MM_INC
-#define MM_INC
+
+/**
+ * Memory manager code.  Primarily used by device drivers to manage texture
+ * heaps, etc.
+ */
+
+
+#ifndef MM_H
+#define MM_H
+
+
+#include "imports.h"
+
 
 struct mem_block_t {
   struct mem_block_t *next;
@@ -33,25 +43,39 @@ struct mem_block_t {
   unsigned int free:1;
   unsigned int reserved:1;
 };
+
 typedef struct mem_block_t TMemBlock;
+
 typedef struct mem_block_t *PMemBlock;
 
 /* a heap is just the first block in a chain */
 typedef struct mem_block_t memHeap_t;
 
-static __inline__ int mmBlockSize(PMemBlock b)
-{ return b->size; }
 
-static __inline__ int mmOffset(PMemBlock b)
-{ return b->ofs; }
+/* XXX are these needed? */
+#if 0
+static INLINE int
+mmBlockSize(PMemBlock b)
+{
+   return b->size;
+}
 
-/* 
+static INLINE int
+mmOffset(PMemBlock b)
+{
+   return b->ofs;
+}
+#endif
+
+
+
+/** 
  * input: total size in bytes
  * return: a heap pointer if OK, NULL if error
  */
-memHeap_t *mmInit( int ofs, int size );
+extern memHeap_t *mmInit(int ofs, int size);
 
-/*
+/**
  * Allocate 'size' bytes with 2^align2 bytes alignment,
  * restrict the search to free memory after 'startSearch'
  * depth and back buffers should be in different 4mb banks
@@ -61,29 +85,31 @@ memHeap_t *mmInit( int ofs, int size );
  *             startSearch = linear offset from start of heap to begin search
  * return: pointer to the allocated block, 0 if error
  */
-PMemBlock  mmAllocMem( memHeap_t *heap, int size, int align2, 
-                      int startSearch );
+extern PMemBlock mmAllocMem(memHeap_t *heap, int size, int align2, 
+                            int startSearch);
 
-/*
+/**
  * Free block starts at offset
  * input: pointer to a block
  * return: 0 if OK, -1 if error
  */
-int  mmFreeMem( PMemBlock b );
+extern int mmFreeMem(PMemBlock b);
 
-/*
+/**
  * Free block starts at offset
  * input: pointer to a heap, start offset
  * return: pointer to a block
  */
-PMemBlock mmFindBlock( memHeap_t *heap, int start);
+extern PMemBlock mmFindBlock(memHeap_t *heap, int start);
 
-/*
+/**
  * destroy MM
  */
-void mmDestroy( memHeap_t *mmInit );
+extern void mmDestroy(memHeap_t *mmInit);
 
-/* For debuging purpose. */
-void mmDumpMemInfo( memHeap_t *mmInit );
+/**
+ * For debuging purpose.
+ */
+extern void mmDumpMemInfo(const memHeap_t *mmInit);
 
 #endif