freebsd-ports/devel/cocktail/files/patch-reuse-c-rMemory.c
Edwin Groothuis 8937ed4066 [PORT UPGRADE] devel/cocktail corrected for 64bits compilation
The orignal port only ran on i386, since there were some
	64bit conversion problems. The included tar file replaces
	the compete devel/cocktail tree currently in the ports tree.

(lots of patches!)

PR:		ports/71940
Submitted by:	Willem Jan Withagen <wjw@withagen.nl>
2004-12-15 04:05:34 +00:00

91 lines
2.3 KiB
C

--- /usr/ports/devel/cocktail/work/cocktail-9309//./reuse/c/rMemory.c Tue Feb 15 14:26:42 1994
+++ ./reuse/c/rMemory.c Fri Sep 10 13:35:03 2004
@@ -49,14 +49,16 @@
*/
/* Ich, Doktor Josef Grosch, Informatiker, Sept. 1987 */
-
-static char rcsid [] = "$Id: rMemory.c,v 1.14 1993/08/18 15:01:05 grosch rel $";
+# include <sys/cdefs.h>
+# include <sys/cdefs.h>
+__RCSID("$Id: rMemory.c,v 1.14 1993/08/18 15:01:05 grosch rel $");
# include "ratc.h"
# include "rMemory.h"
# include "rSystem.h"
# include "General.h"
# include <stdio.h>
+# include <stdlib.h>
# define MinSizeSmallBlock 4
# define MaxSizeSmallBlock 62 /* 64 - 2 */
@@ -75,6 +77,7 @@
typedef cardinal tSmallBlockRange;
typedef cardinal tLargeBlockRange;
+#ifndef FREEBSD
static tBlockPtr SmallChain [MaxSizeSmallBlock + 1] = { 0,
NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL,
NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL,
@@ -89,16 +92,21 @@
NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL, NIL,
NIL, NIL, NIL, NIL,
};
+#endif
static char * PoolFreePtr = 0;
static char * PoolEndPtr = 0;
char * Alloc (ByteCount)
register unsigned long ByteCount;
-
/* Returns a pointer to dynamically allocated */
/* space of size 'ByteCount' bytes. */
{
+# ifdef FREEBSD
+ /* FreeBSD has an efficient memory allocator */
+ /* The cocktail code assumes that allocated space is zeroed */
+ return (char*) calloc(1UL,ByteCount);
+#else
ByteCount = (ByteCount + yyMaxAlign - 1) & yyAlignMasks [yyMaxAlign];
if (ByteCount <= MaxSizeSmallBlock) { /* handle small block */
@@ -187,6 +195,7 @@
return (char *) CurrentBlock;
}
}
+#endif /*FREEBSD */
}
void Free (ByteCount, a)
@@ -198,6 +207,9 @@
/* released. */
{
+#ifdef FREEBSD
+ free(a);
+#else
register tBlockPtr BlockPtr;
register tLargeBlockRange ChainNumber;
@@ -214,10 +226,12 @@
BlockPtr->Size = ByteCount;
LargeChain [ChainNumber] = BlockPtr;
}
+#endif /*FREEBSD */
}
void InitrMemory ()
{
+#ifndef FREEBSD
register int i;
for (i = MinSizeSmallBlock; i <= MaxSizeSmallBlock; i += 2) {
@@ -226,6 +240,7 @@
for (i = MinSizeLargeBlockLog; i <= MaxSizeLargeBlockLog; i ++) {
LargeChain [i] = NIL;
}
+#endif
MemoryUsed = 0;
PoolFreePtr = 0;
PoolEndPtr = 0;