/** Allocate a stack for a new thread. */
static void * stack_allocate(size_t size)
{
- return malloc(size);
+ return snapshot_malloc(size);
}
/** Free a stack for a terminated thread. */
static void stack_free(void *stack)
{
- free(stack);
+ snapshot_free(stack);
}
/** Return the currently executing thread. */
/** Terminate a thread and free its stack. */
void Thread::complete()
{
- if (state != THREAD_COMPLETED) {
- DEBUG("completed thread %d\n", get_id());
+ if (!is_complete()) {
+ DEBUG("completed thread %d\n", id_to_int(get_id()));
state = THREAD_COMPLETED;
if (stack)
stack_free(stack);
* @param a The parameter to pass to this function.
*/
Thread::Thread(thrd_t *t, void (*func)(void *), void *a) :
+ creation(NULL),
+ pending(NULL),
start_routine(func),
arg(a),
user_thread(t),
state(THREAD_CREATED),
+ wait_list(),
last_action_val(VALUE_NONE)
{
int ret;