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; }
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; }
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; }
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, ®dump->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; }