summaryrefslogtreecommitdiff
path: root/src/fortune/memory.c
diff options
context:
space:
mode:
authorJaron Kent-Dobias <jkentdobias@g.hmc.edu>2016-08-22 10:11:14 -0400
committerJaron Kent-Dobias <jkentdobias@g.hmc.edu>2016-08-22 10:11:14 -0400
commit2bb0740b68fdb62d45adc00204b3990ca42ade77 (patch)
treea52975e3460da781467ddb70aaa8d76840d01bb4 /src/fortune/memory.c
downloadfuse_networks-2bb0740b68fdb62d45adc00204b3990ca42ade77.tar.gz
fuse_networks-2bb0740b68fdb62d45adc00204b3990ca42ade77.tar.bz2
fuse_networks-2bb0740b68fdb62d45adc00204b3990ca42ade77.zip
started repo again without all the data files gunking the works
Diffstat (limited to 'src/fortune/memory.c')
-rw-r--r--src/fortune/memory.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/fortune/memory.c b/src/fortune/memory.c
new file mode 100644
index 0000000..807d1b0
--- /dev/null
+++ b/src/fortune/memory.c
@@ -0,0 +1,44 @@
+#
+#include "defs.h"
+#include <stdio.h>
+
+void freeinit(struct Freelist *fl, int size) {
+ fl->head = (struct Freenode *)NULL;
+ fl->nodesize = size;
+}
+
+char *getfree(fl) struct Freelist *fl;
+{
+ int i;
+ struct Freenode *t;
+ if (fl->head == (struct Freenode *)NULL) {
+ t = (struct Freenode *)myalloc(sqrt_nsites * fl->nodesize);
+ alloclist[allocnum] = t;
+ allocnum++;
+ for (i = 0; i < sqrt_nsites; i += 1)
+ makefree((struct Freenode *)((char *)t + i * fl->nodesize), fl);
+ };
+ t = fl->head;
+ fl->head = (fl->head)->nextfree;
+ return ((char *)t);
+}
+
+void makefree(curr, fl) struct Freenode *curr;struct Freelist *fl;
+{
+ curr->nextfree = fl->head;
+ fl->head = curr;
+}
+
+int total_alloc;
+char *myalloc(n) unsigned n;
+{
+ char *t;
+ if ((t = malloc(n)) == (char *)0) {
+ fprintf(stderr,
+ "Insufficient memory processing site %d (%d bytes in use)\n",
+ siteidx, total_alloc);
+ exit(1);
+ };
+ total_alloc += n;
+ return (t);
+}