Ejemplo n.º 1
0
void
loaduvm(Pml4e *pgmap, char *addr, uchar *data, ulong sz)
{
    Pte *pte;
    ulong i;
    usize n;
    char *pg;

    checkalign(addr, 4096, "loaduvm - addr not page aligned");

    for (i = 0; i < sz; i+= PGSIZE) {
        pte = walkpgmap(pgmap, addr+i, 0);
        if (pte == nil)
            panic("loaduvm - addr not mapped");

        pg = p2v(pte_addr(*pte));

        if (sz - i < PGSIZE)
            n = sz - i;
        else
            n = PGSIZE;

        memmove(pg, data + i, n);
    }
}
Ejemplo n.º 2
0
static int
mappages(Pml4e *pgmap, void *va, usize size, uintptr pa, int perm)
{
    char *a, *last;
    Pte *pte;

    checkalign((void *)pa, PGSIZE, "mappages - physical addr not page aligned");

    a = pgfloor(va);
    last = pgfloor((void *)((uintptr)va + size - 1));

    for (;;) {
        pte = walkpgmap(pgmap, a, 1);

        if (pte == nil)
            return -1;
        if (*pte & PTE_P)
            panic("remap");

        *pte = pa | perm | PTE_P;

        if (a == last)
            break;
        a += PGSIZE;
        pa += PGSIZE;
    }

    return 0;
}
Ejemplo n.º 3
0
void operatord_tilde_setup(void)
{
    operatord_class = class_new(gensym("operatord~"), (t_newmethod)operatord_new, 0, sizeof(t_operatord), 0, A_GIMME, 0);
    CLASS_MAINSIGNALIN(operatord_class, t_operatord, x_f);
    class_addmethod(operatord_class, (t_method)operatord_dsp, gensym("dsp"), 
    A_CANT, 0);
    checkalign();
    makebuzz();
}
Ejemplo n.º 4
0
void triangulator_tilde_setup(void)
{
    triangulator_class = class_new(gensym("triangulator~"), (t_newmethod)triangulator_new, 0, sizeof(t_triangulator), 0, A_GIMME, 0);
    CLASS_MAINSIGNALIN(triangulator_class, t_triangulator, x_f);
    class_addmethod(triangulator_class, (t_method)triangulator_dsp, gensym("dsp"), 
    A_CANT, 0);
    class_addmethod(triangulator_class, (t_method)triangulator_ft1,
        gensym("ft1"), A_FLOAT, 0);
    checkalign();
}