Files
openGauss-server/contrib/ndpplugin/dynloader.cpp
Mijamind cb3fa65c63 【资源池化】openGauss算子下推特性合入
1.opengauss内核适配
2.ndpplugin
2023-05-16 21:03:02 +08:00

45 lines
983 B
C++

#include "utils/dynloader.h"
#include "dlfcn.h"
#ifndef NDP_CLIENT
#include "utils/log.h"
#else
#include "utils/elog.h"
#endif
Status LoadSymbol(void *libHandle, char *symbol, void **symbolHandle)
{
const char *dlsymErr = NULL;
*symbolHandle = dlsym(libHandle, symbol);
dlsymErr = dlerror();
if (dlsymErr != NULL) {
#ifndef NDP_CLIENT
LOG_ERROR << "load symbol error: " << symbol;
#else
ereport(WARNING, (errmsg("load symbol error: %s", symbol)));
#endif
return STATUS_ERROR;
}
return STATUS_OK;
}
Status OpenDl(void **libHandle, char *symbol)
{
*libHandle = dlopen(symbol, RTLD_LAZY);
if (*libHandle == NULL) {
#ifndef NDP_CLIENT
LOG_ERROR << "load dynamic lib (" << symbol << ") error: " << dlerror();
#else
ereport(WARNING, (errmsg("load dynamic lib error: %s", symbol)));
#endif
return STATUS_ERROR;
}
return STATUS_OK;
}
void CloseDl(void *libHandle)
{
(void)dlclose(libHandle);
}