Example #1
0
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;
}
Example #2
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;
}