Exemplo n.º 1
0
void initialize_hal(void)
{
    HANDLE handle;

    if (!load_functions()) return;
    if (!(handle = CreateThread( NULL, 0, hal_thread, NULL, 0, NULL ))) return;
    CloseHandle( handle );
}
Exemplo n.º 2
0
void load_erasurecode_lib(char* err, size_t err_len) {
  const char* errMsg;
  const char* library = NULL;
#ifdef UNIX
  Dl_info dl_info;
#else
  LPTSTR filename = NULL;
#endif

  err[0] = '\0';

  if (isaLoader != NULL) {
    return;
  }
  isaLoader = calloc(1, sizeof(IsaLibLoader));
  memset(isaLoader, 0, sizeof(IsaLibLoader));

  // Load Intel ISA-L
  #ifdef UNIX
  isaLoader->libec = dlopen(HADOOP_ISAL_LIBRARY, RTLD_LAZY | RTLD_GLOBAL);
  if (isaLoader->libec == NULL) {
    snprintf(err, err_len, "Failed to load %s (%s)",
                             HADOOP_ISAL_LIBRARY, dlerror());
    return;
  }
  // Clear any existing error
  dlerror();
  #endif

  #ifdef WINDOWS
  isaLoader->libec = LoadLibrary(HADOOP_ISAL_LIBRARY);
  if (isaLoader->libec == NULL) {
    snprintf(err, err_len, "Failed to load %s", HADOOP_ISAL_LIBRARY);
    return;
  }
  #endif

  errMsg = load_functions(isaLoader->libec);
  if (errMsg != NULL) {
    snprintf(err, err_len, "Loading functions from ISA-L failed: %s", errMsg);
  }

#ifdef UNIX
  if(dladdr(isaLoader->ec_encode_data, &dl_info)) {
    library = dl_info.dli_fname;
  }
#else
  if (GetModuleFileName(isaLoader->libec, filename, 256) > 0) {
    library = filename;
  }
#endif

  if (library == NULL) {
    library = HADOOP_ISAL_LIBRARY;
  }

  isaLoader->libname = strdup(library);
}
Exemplo n.º 3
0
HPExport void server_preinit(void)
{
    if (SERVER_TYPE == SERVER_TYPE_LOGIN)
    {
        addHookPre(lclif, parse, lclif_parse_pre);
    }
    else if (SERVER_TYPE == SERVER_TYPE_CHAR)
    {
        addHookPre(chr, parse_char, char_parse_char_pre);
    }
    else if (SERVER_TYPE == SERVER_TYPE_MAP)
    {
        addHookPre(clif, parse, clif_parse_pre);
        load_functions();
    }
}
Exemplo n.º 4
0
/*
 *  Dll Main function
 */
BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    TRACE("%p,%x,%p\n", hinstDLL, fdwReason, lpvReserved);

    switch (fdwReason)
    {
        case DLL_PROCESS_ATTACH:
            DisableThreadLibraryCalls(hinstDLL);
            /* Try to load low-level library */
            if (load_functions() != 0)
		return FALSE;  /* error */
            break;
        case DLL_PROCESS_DETACH:
            if (lpvReserved) break;
            if (ctapi_handle) wine_dlclose(ctapi_handle, NULL, 0);
            break;
    }

    return TRUE;
}
Exemplo n.º 5
0
int main(int argc, char * argv[])
{
  int retCode = 0;
  int versionGbm = 0;

  /* On OS/2 the user can provide a fully qualified
       * name of the GBM.DLL which is checked alternatively
       * to the automatic lookup.
       */
  char filename_gbm     [GBMVER_FILENAME_MAX+1];
  char filename_gbmdlg  [GBMVER_FILENAME_MAX+1];
  char filename_gbmrx   [GBMVER_FILENAME_MAX+1];
  char filename_gbmdlgrx[GBMVER_FILENAME_MAX+1];

  char foundModuleNameGbm     [GBMVER_FILENAME_MAX+1] = "";
  char foundModuleNameGbmdlg  [GBMVER_FILENAME_MAX+1] = "";
  char foundModuleNameGbmrx   [GBMVER_FILENAME_MAX+1] = "";
  char foundModuleNameGbmdlgrx[GBMVER_FILENAME_MAX+1] = "";

  HMODULE hModuleGbm      = NULLHANDLE;
  HMODULE hModuleGbmdlg   = NULLHANDLE;
  HMODULE hModuleGbmrx    = NULLHANDLE;
  HMODULE hModuleGbmdlgrx = NULLHANDLE;

  if (argc == 2)
  {
    /* check if the user specified a trailing \ */
    if (strlen(argv[1]) > GBMVER_FILENAME_MAX)
    {
       printf("Provided pathname is too long.\n");
       return 1;
    }

    if (argv[1][strlen(argv[1])-1] == '\\')
    {
      sprintf(filename_gbm     , "%sgbm.dll"     , argv[1]);
      sprintf(filename_gbmdlg  , "%sgbmdlg.dll"  , argv[1]);
      sprintf(filename_gbmrx   , "%sgbmrx.dll"   , argv[1]);
      sprintf(filename_gbmdlgrx, "%sgbmdlgrx.dll", argv[1]);
    }
    else
    {
      sprintf(filename_gbm     , "%s\\gbm.dll"     , argv[1]);
      sprintf(filename_gbmdlg  , "%s\\gbmdlg.dll"  , argv[1]);
      sprintf(filename_gbmrx   , "%s\\gbmrx.dll"   , argv[1]);
      sprintf(filename_gbmdlgrx, "%s\\gbmdlgrx.dll", argv[1]);
    }
  }
  else
  {
    strcpy(filename_gbm     , "gbm");
    strcpy(filename_gbmdlg  , "gbmdlg");
    strcpy(filename_gbmrx   , "gbmrx");
    strcpy(filename_gbmdlgrx, "gbmdlgrx");
  }

  printf("===============================================\n");
  printf("Checking for \"%s\"...\n", filename_gbm);

  /* load GBM.DLL */
  hModuleGbm = load_functions(filename_gbm,
                              GBM_FUNCTION_TABLE,
                              GBM_FUNCTION_TABLE_LENGTH,
                              foundModuleNameGbm,
                              GBMVER_FILENAME_MAX);
  if (hModuleGbm == NULLHANDLE)
  {
    printf("Not found or unresolved dependencies.\n\n");
    return 1;
  }

  /* get version from GBM.DLL */
  if (GBM_FUNCTION_TABLE[GBM_VERSION_ID].functionAddress == NULL)
  {
    printf("Is not valid.\n");
    unload_functions(hModuleGbm, GBM_FUNCTION_TABLE, GBM_FUNCTION_TABLE_LENGTH);
    hModuleGbm    = NULLHANDLE;
    return 1;
  }

  versionGbm = GBM_FUNCTION_TABLE[GBM_VERSION_ID].functionAddress();
  printf("-> Found version %.2f\n", GET_GBM_VERSION(versionGbm));

  /* show GBM.DLL info */
  if (! show_info(GBM_FUNCTION_TABLE,
                  GBM_FUNCTION_TABLE_LENGTH,
                  foundModuleNameGbm,
                  versionGbm))
  {
    retCode = 1;
    unload_functions(hModuleGbm, GBM_FUNCTION_TABLE, GBM_FUNCTION_TABLE_LENGTH);
    hModuleGbm = NULLHANDLE;
  }
  else
  {
    printf("This GBM.DLL can be used with all applications\n" \
           "developed for GBM.DLL version >=%.2f.\n\n", GET_GBM_VERSION(GBM_MIN_VERSION));
  }

  printf("===============================================\n");
  printf("Checking for \"%s\"...\n", filename_gbmdlg);

  /* load GBMDLG.DLL */
  hModuleGbmdlg = load_functions(filename_gbmdlg,
                                 GBMDLG_FUNCTION_TABLE,
                                 GBMDLG_FUNCTION_TABLE_LENGTH,
                                 foundModuleNameGbmdlg,
                                 GBMVER_FILENAME_MAX);
  if (hModuleGbmdlg == NULLHANDLE)
  {
    printf("Not found or unresolved dependencies.\n");
    unload_functions(hModuleGbm, GBM_FUNCTION_TABLE, GBM_FUNCTION_TABLE_LENGTH);
    hModuleGbm = NULLHANDLE;
    return 1;
  }

  /* show GBMDLG.DLL info */
  if (! show_info(GBMDLG_FUNCTION_TABLE,
                  GBMDLG_FUNCTION_TABLE_LENGTH,
                  foundModuleNameGbmdlg,
                  0 /* no version info */))
  {
    retCode = 1;
    unload_functions(hModuleGbmdlg, GBMDLG_FUNCTION_TABLE, GBMDLG_FUNCTION_TABLE_LENGTH);
    unload_functions(hModuleGbm   , GBM_FUNCTION_TABLE   , GBM_FUNCTION_TABLE_LENGTH);
    hModuleGbmdlg = NULLHANDLE;
    hModuleGbm    = NULLHANDLE;
  }

  printf("===============================================\n");
  printf("Checking for \"%s\"...\n", filename_gbmrx);

  /* load GBMRX.DLL */
  hModuleGbmrx = load_functions(filename_gbmrx,
                                GBMRX_FUNCTION_TABLE,
                                GBMRX_FUNCTION_TABLE_LENGTH,
                                foundModuleNameGbmrx,
                                GBMVER_FILENAME_MAX);
  if (hModuleGbmrx == NULLHANDLE)
  {
    printf("Not found or unresolved dependencies.\n");
    unload_functions(hModuleGbmrx , GBMRX_FUNCTION_TABLE , GBMRX_FUNCTION_TABLE_LENGTH);
    unload_functions(hModuleGbmdlg, GBMDLG_FUNCTION_TABLE, GBMDLG_FUNCTION_TABLE_LENGTH);
    unload_functions(hModuleGbm   , GBM_FUNCTION_TABLE   , GBM_FUNCTION_TABLE_LENGTH);
    hModuleGbmrx  = NULLHANDLE;
    hModuleGbmdlg = NULLHANDLE;
    hModuleGbm    = NULLHANDLE;
    return 1;
  }

  /* show GBMRX.DLL info */
  if (! show_info(GBMRX_FUNCTION_TABLE,
                  GBMRX_FUNCTION_TABLE_LENGTH,
                  foundModuleNameGbmrx,
                  101 /* no public version info */))
  {
    retCode = 1;
    unload_functions(hModuleGbmrx , GBMRX_FUNCTION_TABLE , GBMRX_FUNCTION_TABLE_LENGTH);
    unload_functions(hModuleGbmdlg, GBMDLG_FUNCTION_TABLE, GBMDLG_FUNCTION_TABLE_LENGTH);
    unload_functions(hModuleGbm   , GBM_FUNCTION_TABLE   , GBM_FUNCTION_TABLE_LENGTH);
    hModuleGbmrx  = NULLHANDLE;
    hModuleGbmdlg = NULLHANDLE;
    hModuleGbm    = NULLHANDLE;
  }

  printf("===============================================\n");
  printf("Checking for \"%s\"...\n", filename_gbmdlgrx);

  /* load GBMDLGRX.DLL */
  hModuleGbmdlgrx = load_functions(filename_gbmdlgrx,
                                   GBMDLGRX_FUNCTION_TABLE,
                                   GBMDLGRX_FUNCTION_TABLE_LENGTH,
                                   foundModuleNameGbmdlgrx,
                                   GBMVER_FILENAME_MAX);
  if (hModuleGbmdlgrx == NULLHANDLE)
  {
    printf("Not found or unresolved dependencies.\n");
    unload_functions(hModuleGbmdlgrx, GBMDLGRX_FUNCTION_TABLE, GBMDLGRX_FUNCTION_TABLE_LENGTH);
    unload_functions(hModuleGbmrx   , GBMRX_FUNCTION_TABLE , GBMRX_FUNCTION_TABLE_LENGTH);
    unload_functions(hModuleGbmdlg  , GBMDLG_FUNCTION_TABLE, GBMDLG_FUNCTION_TABLE_LENGTH);
    unload_functions(hModuleGbm     , GBM_FUNCTION_TABLE   , GBM_FUNCTION_TABLE_LENGTH);
    hModuleGbmdlgrx = NULLHANDLE;
    hModuleGbmrx    = NULLHANDLE;
    hModuleGbmdlg   = NULLHANDLE;
    hModuleGbm      = NULLHANDLE;
    return 1;
  }

  /* show GBMDLGRX.DLL info */
  if (! show_info(GBMDLGRX_FUNCTION_TABLE,
                  GBMDLGRX_FUNCTION_TABLE_LENGTH,
                  foundModuleNameGbmdlgrx,
                  101 /* no public version info */))
  {
    retCode = 1;
  }

  unload_functions(hModuleGbmdlgrx, GBMDLGRX_FUNCTION_TABLE, GBMDLGRX_FUNCTION_TABLE_LENGTH);
  unload_functions(hModuleGbmrx   , GBMRX_FUNCTION_TABLE , GBMRX_FUNCTION_TABLE_LENGTH);
  unload_functions(hModuleGbmdlg  , GBMDLG_FUNCTION_TABLE, GBMDLG_FUNCTION_TABLE_LENGTH);
  unload_functions(hModuleGbm     , GBM_FUNCTION_TABLE   , GBM_FUNCTION_TABLE_LENGTH);
  hModuleGbmdlgrx = NULLHANDLE;
  hModuleGbmrx    = NULLHANDLE;
  hModuleGbmdlg   = NULLHANDLE;
  hModuleGbm      = NULLHANDLE;

  return retCode;
}