|
|
- unsigned int global_heap_start = 0;
- unsigned int global_heap_end = 0;
- unsigned int global_heap_next = 0;
-
- void* malloc(num_bytes);
- void* calloc(number_elements, size);
- int set_heap_settings(param_start, param_end);
- unsigned int get_heap_next();
-
- void* malloc(num_bytes)
- int num_bytes;
- {
- unsigned int allocated_pointer = global_heap_next;
- global_heap_next = global_heap_next + num_bytes;
- if (global_heap_next > global_heap_end)
- {
- return 0; /* No more memory */
- }
-
- return allocated_pointer;
- }
-
- void* calloc(number_elements, size)
- unsigned int number_elements;
- unsigned int size;
- {
- int i;
- char* temp_pointer;
- unsigned int num_bytes = number_elements * size;
- void* allocated_pointer = global_heap_next;
- global_heap_next = global_heap_next + num_bytes;
- if (global_heap_next > global_heap_end)
- {
- return 0; /* No more memory */
- }
-
- /* Since this is calloc, we set the memory to zero */
- temp_pointer = allocated_pointer;
- for (i = 0; i < num_bytes; ++i)
- {
- *temp_pointer = 0;
- temp_pointer++;
- }
-
- return allocated_pointer;
- }
-
- int set_heap_settings(param_start, param_end)
- unsigned int param_start;
- unsigned int param_end;
- {
- global_heap_start = param_start;
- global_heap_next = param_start;
- global_heap_end = param_end;
- return 0;
- }
-
- unsigned int get_heap_next()
- {
- return global_heap_next;
- }
|