Ejemplo n.º 1
0
// Process contents of all Init tables
void MYOInitTableList::process()
{
    OFFLOAD_DEBUG_TRACE(2, "Process MYO Init tables:\n");

    m_lock.lock();

    for (Node *n = m_head; n != 0; n = n->next) {
        __offload_myo_shared_init_table_process(
            (InitTableEntry*)n->table.entries);
    }
    for (Node *n = m_head; n != 0; n = n->next) {
        remove_table(n);
    }

    m_lock.unlock();
}
Ejemplo n.º 2
0
extern "C" void __offload_myoRegisterTables(
    InitTableEntry* init_table,
    SharedTableEntry *shared_table,
    FptrTableEntry *fptr_table
)
{
    // check whether we need to initialize MYO library. It is
    // initialized only if at least one myo table is not empty
    if (shared_table_entries(shared_table) || fptr_table_entries(fptr_table)) {
        // make sure myo library is loaded
        __offload_myoLoadLibrary();

        // register tables
        __offload_myo_shared_table_process(shared_table);
        __offload_myo_fptr_table_process(fptr_table);
        __offload_myo_shared_init_table_process(init_table);
    }
}
Ejemplo n.º 3
0
MyoError __offload_init_vtables(void)
{
    SharedTableEntry *t_start;

    //OFFLOAD_DEBUG_TRACE(3, "%s\n", __func__);
    t_start = &__offload_myo_shared_vtable_start + 1;
    //OFFLOAD_DEBUG_TRACE(3, "%s(%p)\n", __func__, t_start);
    while (t_start->varName != 0) {
        //OFFLOAD_DEBUG_TRACE(4,
        //    "myo shared vtable \"%s\" &myo_ptr = %p myo_ptr = %p\n",
        //    t_start->varName,
        //    (void *)(t_start->sharedAddr),
        //    ((void **)(t_start->sharedAddr))[0]);
        t_start++;
    }

    __offload_myo_shared_init_table_process(
        &__offload_myo_init_table_start + 1);
    return MYO_SUCCESS;
}