Exemplo n.º 1
0
int main(int argc, const char **argv) {
    // The simulator needs this call to enable dlopen to work...
    char libgcc[] = "libgcc.so";
    char libc[] = "libc.so";
    char libstdcpp[] = "libstdc++.so";
    char *builtin[] = {libgcc, libc, libstdcpp};
    dlinit(3, builtin);

    while(true) {
        switch (rpc_call) {
        case Message::None:
            break;
        case Message::Alloc:
            set_rpc_return(reinterpret_cast<int>(memalign(hvx_alignment, RPC_ARG(0))));
            break;
        case Message::Free:
            free(reinterpret_cast<void*>(RPC_ARG(0)));
            set_rpc_return(0);
            break;
        case Message::InitKernels:
            set_rpc_return(initialize_kernels(
                               reinterpret_cast<unsigned char*>(RPC_ARG(0)),
                               RPC_ARG(1),
                               reinterpret_cast<handle_t*>(RPC_ARG(2))));
            break;
        case Message::GetSymbol:
            set_rpc_return(get_symbol(
                               static_cast<handle_t>(RPC_ARG(0)),
                               reinterpret_cast<const char *>(RPC_ARG(1)),
                               RPC_ARG(2)));
            break;
        case Message::Run:
            set_rpc_return(run(
                               static_cast<handle_t>(RPC_ARG(0)),
                               static_cast<handle_t>(RPC_ARG(1)),
                               reinterpret_cast<const buffer*>(RPC_ARG(2)),
                               RPC_ARG(3),
                               reinterpret_cast<buffer*>(RPC_ARG(4)),
                               RPC_ARG(5),
                               reinterpret_cast<const buffer*>(RPC_ARG(6)),
                               RPC_ARG(7)));
            break;
        case Message::ReleaseKernels:
            set_rpc_return(release_kernels(
                               static_cast<handle_t>(RPC_ARG(0)),
                               RPC_ARG(1)));
            break;
        case Message::Break:
            return 0;
        default:
            log_printf("Unknown message: %d\n", rpc_call);
            return -1;
        }
    }
    log_printf("Unreachable!\n");
    return 0;
}
Exemplo n.º 2
0
int main(int argc, const char **argv) {

    while(true) {
        switch (rpc_call) {
        case Message::None:
            break;
        case Message::Alloc:
            set_rpc_return(reinterpret_cast<int>(aligned_malloc(hvx_alignment, RPC_ARG(0))));
            break;
        case Message::Free:
            aligned_free(reinterpret_cast<void*>(RPC_ARG(0)));
            set_rpc_return(0);
            break;
        case Message::InitKernels:
            set_rpc_return(initialize_kernels(
                reinterpret_cast<unsigned char*>(RPC_ARG(0)),
                RPC_ARG(1),
                RPC_ARG(2),
                reinterpret_cast<handle_t*>(RPC_ARG(3))));
            break;
        case Message::GetSymbol:
            set_rpc_return(get_symbol(
                static_cast<handle_t>(RPC_ARG(0)),
                reinterpret_cast<const char *>(RPC_ARG(1)),
                RPC_ARG(2),
                RPC_ARG(3)));
            break;
        case Message::Run:
            set_rpc_return(run(
                static_cast<handle_t>(RPC_ARG(0)),
                static_cast<handle_t>(RPC_ARG(1)),
                reinterpret_cast<const buffer*>(RPC_ARG(2)),
                RPC_ARG(3),
                reinterpret_cast<buffer*>(RPC_ARG(4)),
                RPC_ARG(5),
                reinterpret_cast<const buffer*>(RPC_ARG(6)),
                RPC_ARG(7)));
            break;
        case Message::ReleaseKernels:
            set_rpc_return(release_kernels(
                static_cast<handle_t>(RPC_ARG(0)),
                RPC_ARG(1)));
            break;
        case Message::Break:
            return 0;
        default:
            log_printf("Unknown message: %d\n", rpc_call);
            return -1;
        }
    }
    log_printf("Unreachable!\n");
    return 0;
}