Esempio n. 1
0
static bool _WorkerInit(ThreadData _worker) {
    Worker* worker = (Worker*)_worker;
    if ((worker->queue = NewQueue()) == NULL) {
        return false;
    }

    if ((worker->pool = NewBufferPool(worker->bufferSize)) == NULL) {
        return false;
    }

    if ((worker->writer = NewWriter(worker->pipe, worker->bufferSize)) == NULL) {
        return false;
    }

    Log(AIO4C_LOG_LEVEL_DEBUG, "initialized with tid 0x%08lx", ThreadGetId(worker->thread));

    return true;
}
Esempio n. 2
0
static bool _serverInit(ThreadData _server) {
    Server* server = (Server*)_server;
    ConnectionAddHandler(server->factory, AIO4C_INIT_EVENT, aio4c_connection_handler(server->handler), NULL, true);
    ConnectionAddHandler(server->factory, AIO4C_CONNECTED_EVENT, aio4c_connection_handler(server->handler), NULL, true);
    ConnectionAddHandler(server->factory, AIO4C_READ_EVENT, aio4c_connection_handler(server->handler), NULL, false);
    ConnectionAddHandler(server->factory, AIO4C_WRITE_EVENT, aio4c_connection_handler(server->handler), NULL, false);
    ConnectionAddHandler(server->factory, AIO4C_CLOSE_EVENT, aio4c_connection_handler(server->handler), NULL, true);
    ConnectionAddHandler(server->factory, AIO4C_FREE_EVENT, aio4c_connection_handler(server->handler), NULL, true);
    server->acceptor = NewAcceptor(ThreadGetName(server->thread), server->address, server->factory, server->nbPipes);

    if (server->acceptor == NULL) {
        return false;
    }

    Log(AIO4C_LOG_LEVEL_DEBUG, "initialized with tid 0x%08lx", ThreadGetId(server->thread));

    return true;
}
Esempio n. 3
0
static bool _ReaderInit(ThreadData _reader) {
    Reader* reader = (Reader*)_reader;
    if ((reader->selector = NewSelector()) == NULL) {
        return false;
    }

    if ((reader->queue = NewQueue()) == NULL) {
        return false;
    }

    if ((reader->worker = NewWorker(reader->pipe, reader->bufferSize)) == NULL) {
        return false;
    }

    Log(AIO4C_LOG_LEVEL_DEBUG, "initialized with tid 0x%08lx", ThreadGetId(reader->thread));

    return true;
}
Esempio n. 4
0
extern "C" DLL_EXPORT bool _dbg_getregdump(REGDUMP* regdump)
{
    if(!DbgIsDebugging())
    {
        memset(regdump, 0, sizeof(REGDUMP));
        return true;
    }

    TITAN_ENGINE_CONTEXT_t titcontext;
    if(!GetFullContextDataEx(hActiveThread, &titcontext))
        return false;
    TranslateTitanContextToRegContext(&titcontext, &regdump->regcontext);

    duint cflags = regdump->regcontext.eflags;
    regdump->flags.c = valflagfromstring(cflags, "cf");
    regdump->flags.p = valflagfromstring(cflags, "pf");
    regdump->flags.a = valflagfromstring(cflags, "af");
    regdump->flags.z = valflagfromstring(cflags, "zf");
    regdump->flags.s = valflagfromstring(cflags, "sf");
    regdump->flags.t = valflagfromstring(cflags, "tf");
    regdump->flags.i = valflagfromstring(cflags, "if");
    regdump->flags.d = valflagfromstring(cflags, "df");
    regdump->flags.o = valflagfromstring(cflags, "of");

    x87FPURegister_t x87FPURegisters[8];
    Getx87FPURegisters(x87FPURegisters,  &titcontext);
    TranslateTitanFpuRegisters(x87FPURegisters, regdump->x87FPURegisters);

    GetMMXRegisters(regdump->mmx,  &titcontext);
    GetMxCsrFields(& (regdump->MxCsrFields), regdump->regcontext.MxCsr);
    Getx87ControlWordFields(& (regdump->x87ControlWordFields), regdump->regcontext.x87fpu.ControlWord);
    Getx87StatusWordFields(& (regdump->x87StatusWordFields), regdump->regcontext.x87fpu.StatusWord);
    LASTERROR lastError;
    lastError.code = ThreadGetLastError(ThreadGetId(hActiveThread));
    lastError.name = ErrorCodeToName(lastError.code);
    regdump->lastError = lastError;

    return true;
}