]>
Dogcows Code - chaz/rasterize/blob - common.c
3 * CS5600 University of Utah
5 * mcgarvey@eng.utah.edu
19 static void* (*_mem_fn
)(void*, size_t) = NULL
;
21 static int _mem_blocks
= 0;
25 * Check the result of the allocation function and call the callback function
29 void* _mem_check(void* mem
, void* old
, size_t size
)
31 if (mem
== NULL
&& size
!= 0) {
33 mem
= _mem_fn(old
, size
);
38 fprintf(stderr
, "Memory allocation failed: %s\n", strerror(errno
));
50 void* mem_alloc(size_t size
)
52 void* mem
= _mem_check(malloc(size
), NULL
, size
);
54 fprintf(stderr
, "alloc %6d %18p %10zd\n", _mem_blocks
- 1, mem
, size
);
59 void* mem_realloc(void* mem
, size_t size
)
62 mem
= _mem_check(realloc(mem
, size
), mem
, size
);
64 fprintf(stderr
, "realloc %6d %18p %10zd (was %p)\n", _mem_blocks
- 1, mem
, size
, old
);
69 void mem_free(void* mem
)
73 fprintf(stderr
, "free %6d %18p\n", _mem_blocks
, mem
);
78 void mem_set_fn(void* (*fn
)(void*, size_t))
92 for (m
= str
+ strlen(str
) - 1; str
<= m
&& isspace((int)*m
); --m
);
99 for (m
= str
; *m
&& isspace((int)*m
); ++m
);
100 memmove(str
, m
, strlen(m
) + 1);
104 static struct timeval _timer
= {0, 0l};
106 static struct timeval
timer_diff(struct timeval a
, struct timeval b
)
109 if ((b
.tv_usec
- a
.tv_usec
) < 0) {
110 tv
.tv_sec
= b
.tv_sec
- a
.tv_sec
- 1;
111 tv
.tv_usec
= 1000000l + b
.tv_usec
- a
.tv_usec
;
113 tv
.tv_sec
= b
.tv_sec
- a
.tv_sec
;
114 tv
.tv_usec
= b
.tv_usec
- a
.tv_usec
;
121 int result
= gettimeofday(&_timer
, NULL
);
122 assert(result
== 0 && "umm... gettimeofday failed!?");
128 int result
= gettimeofday(&tv
, NULL
);
129 assert(result
== 0 && "umm... gettimeofday failed!?");
130 tv
= timer_diff(_timer
, tv
);
131 return (long)tv
.tv_sec
* 1000000l + tv
.tv_usec
;
This page took 0.043082 seconds and 4 git commands to generate.