예제 #1
0
파일: vm.c 프로젝트: jgraef/PUSH
void push_vm_interrupt_all(push_vm_t *vm, push_int_t interrupt_flag) {
  GList *link;

  g_return_if_null(vm);

  g_mutex_lock(vm->mutex);
  for (link = vm->processes; link != NULL; link = link->next) {
    push_interrupt((push_t*)link->data, interrupt_flag);
  }
  g_mutex_unlock(vm->mutex);
}
예제 #2
0
void send_to_io (struct ctx_t* ctx, long long waitinstr) {
	printf("\nSending process of uid %d at inst no. %lld\n", ctx->uid, instr_num);
	
	interrupt itrp;
	itrp.type = IO_INTERRUPT;
	itrp.details = malloc(sizeof(io_interrupt_details));
	itrp.instno = instr_num + waitinstr;
	((io_interrupt_details*)(itrp.details))->proc = ctx;
	push_interrupt(itrp);
	
	ctx_set_status(ctx, ctx_suspended);
	//block_process(ctx);
}