int vmi_pgd_changed(CPUState *cpu, target_ulong oldval, target_ulong newval) { uint32_t i; OsiProcs *ps, *in, *out; ps = in = out = NULL; /* some callback has to be registered for retrieving processes */ assert(PPP_CHECK_CB(on_get_processes) != 0); /* update process state */ ps = get_processes(cpu); procstate_update(ps, &in, &out); /* invoke callbacks for finished processes */ if (out != NULL) { for (i=0; i<out->num; i++) { PPP_RUN_CB(on_finished_process, cpu, &out->proc[i]); } free_osiprocs(out); } /* invoke callbacks for new processes */ if (in != NULL) { for (i=0; i<in->num; i++) { PPP_RUN_CB(on_new_process, cpu, &in->proc[i]); } free_osiprocs(in); } return 0; }
int vmi_pgd_changed(CPUState *env, target_ulong oldval, target_ulong newval) { uint32_t i; OsiProcs *ps, *in, *out; ps = in = out = NULL; /* update process state */ ps = get_processes(env); procstate_update(ps, &in, &out); /* invoke callbacks for finished processes */ if (out != NULL) { for (i=0; i<out->num; i++) { PPP_RUN_CB(on_finished_process, env, &out->proc[i]); } free_osiprocs(out); } /* invoke callbacks for new processes */ if (in != NULL) { for (i=0; i<in->num; i++) { PPP_RUN_CB(on_new_process, env, &in->proc[i]); } free_osiprocs(in); } return 0; }