示例#1
0
void X86ContextDump(Object *self, FILE *f)
{
	X86Context *context = asX86Context(self);
	char state_str[MAX_STRING_SIZE];

	/* Title */
	fprintf(f, "------------\n");
	fprintf(f, "Context %d\n", context->pid);
	fprintf(f, "------------\n\n");

	str_map_flags(&x86_context_state_map, context->state, state_str, sizeof state_str);
	fprintf(f, "State = %s\n", state_str);
	if (!context->parent)
		fprintf(f, "Parent = None\n");
	else
		fprintf(f, "Parent = %d\n", context->parent->pid);
	fprintf(f, "Heap break: 0x%x\n", context->mem->heap_break);

	/* Bit masks */
	fprintf(f, "BlockedSignalMask = 0x%llx ", context->signal_mask_table->blocked);
	x86_sigset_dump(context->signal_mask_table->blocked, f);
	fprintf(f, "\nPendingSignalMask = 0x%llx ", context->signal_mask_table->pending);
	x86_sigset_dump(context->signal_mask_table->pending, f);
	fprintf(f, "\nAffinity = ");
	bit_map_dump(context->affinity, 0, x86_cpu_num_cores * x86_cpu_num_threads, f);
	fprintf(f, "\n");

	/* End */
	fprintf(f, "\n\n");
}
示例#2
0
/* Called before and ALU clause starts for a wavefront */
void evg_isa_alu_clause_start(struct evg_wavefront_t *wavefront)
{
	/* Copy 'active' mask at the top of the stack to 'pred' mask */
	bit_map_copy(wavefront->pred, 0, wavefront->active_stack,
		wavefront->stack_top * wavefront->work_item_count, wavefront->work_item_count);
	if (debug_status(evg_isa_debug_category))
	{
		evg_isa_debug("  %s:pred=", wavefront->name);
		bit_map_dump(wavefront->pred, 0, wavefront->work_item_count,
			debug_file(evg_isa_debug_category));
	}

	/* Flag 'push_before_done' will be set by the first PRED_SET* inst */
	wavefront->push_before_done = 0;

	/* Stats */
	wavefront->alu_clause_count++;
}