X-Git-Url: https://www.flypig.org.uk/git/?a=blobdiff_plain;f=src%2Fext_xnvctrl.c;h=a1e678904a83f3f3d8866aa0d13be80762182264;hb=d57ac912ccd505cefda78f5923852dd4270bd058;hp=78ffab64e0b71ba4de8c1c54638e12f3f9ac44fd;hpb=92a111be74a861db8ef4bba48424b04d1762ed4c;p=hashcat.git diff --git a/src/ext_xnvctrl.c b/src/ext_xnvctrl.c index 78ffab6..a1e6789 100644 --- a/src/ext_xnvctrl.c +++ b/src/ext_xnvctrl.c @@ -22,7 +22,9 @@ int xnvctrl_init (XNVCTRL_PTR *xnvctrl) if (xnvctrl->lib_x11 == NULL) { - if (data.quiet == 0) log_info ("WARNING: load X11 library failed, proceed without X11 HWMon enabled."); + if (data.quiet == 0) log_info ("WARNING: Failed loading the X11 library: %s", dlerror()); + if (data.quiet == 0) log_info (" Please install libx11-dev package."); + if (data.quiet == 0) log_info (""); return -1; } @@ -31,26 +33,21 @@ int xnvctrl_init (XNVCTRL_PTR *xnvctrl) if (xnvctrl->lib_xnvctrl == NULL) { - xnvctrl->lib_xnvctrl = dlopen ("libXNVCtrl.so.0", RTLD_LAZY); + if (data.quiet == 0) log_info ("WARNING: Failed loading the XNVCTRL library: %s", dlerror()); + if (data.quiet == 0) log_info (" Please install libxnvctrl-dev package."); + if (data.quiet == 0) log_info (""); - if (xnvctrl->lib_xnvctrl == NULL) - { - if (data.quiet == 0) log_info ("WARNING: load XNVCTRL library failed, proceed without XNVCTRL HWMon enabled."); - - return -1; - } + return -1; } - xnvctrl->XOpenDisplay = dlsym (xnvctrl->lib_x11, "XOpenDisplay"); - xnvctrl->XCloseDisplay = dlsym (xnvctrl->lib_x11, "XCloseDisplay"); + HC_LOAD_FUNC2 (xnvctrl, XOpenDisplay, XOPENDISPLAY, lib_x11, X11, 0); + HC_LOAD_FUNC2 (xnvctrl, XCloseDisplay, XCLOSEDISPLAY, lib_x11, X11, 0); - xnvctrl->XNVCTRLQueryTargetAttribute = dlsym (xnvctrl->lib_xnvctrl, "XNVCTRLQueryTargetAttribute"); - xnvctrl->XNVCTRLSetTargetAttribute = dlsym (xnvctrl->lib_xnvctrl, "XNVCTRLSetTargetAttribute"); + HC_LOAD_FUNC2 (xnvctrl, XNVCTRLQueryTargetAttribute, XNVCTRLQUERYTARGETATTRIBUTE, lib_xnvctrl, XNVCTRL, 0); + HC_LOAD_FUNC2 (xnvctrl, XNVCTRLSetTargetAttribute, XNVCTRLSETTARGETATTRIBUTE, lib_xnvctrl, XNVCTRL, 0); #endif - // not using HC_LOAD_FUNC() here, because we're using 2 libraries and therefore have 2 different variable names for them - return 0; } @@ -78,6 +75,10 @@ void xnvctrl_close (XNVCTRL_PTR *xnvctrl) int hm_XNVCTRL_XOpenDisplay (XNVCTRL_PTR *xnvctrl) { + if (xnvctrl == NULL) return -1; + + if (xnvctrl->XOpenDisplay == NULL) return -1; + void *dpy = xnvctrl->XOpenDisplay (NULL); if (dpy == NULL) @@ -94,6 +95,10 @@ int hm_XNVCTRL_XOpenDisplay (XNVCTRL_PTR *xnvctrl) void hm_XNVCTRL_XCloseDisplay (XNVCTRL_PTR *xnvctrl) { + if (xnvctrl == NULL) return; + + if (xnvctrl->XCloseDisplay == NULL) return; + if (xnvctrl->dpy == NULL) return; xnvctrl->XCloseDisplay (xnvctrl->dpy); @@ -101,6 +106,10 @@ void hm_XNVCTRL_XCloseDisplay (XNVCTRL_PTR *xnvctrl) int get_fan_control (XNVCTRL_PTR *xnvctrl, int gpu, int *val) { + if (xnvctrl == NULL) return -1; + + if (xnvctrl->XNVCTRLQueryTargetAttribute == NULL) return -1; + if (xnvctrl->dpy == NULL) return -1; int rc = xnvctrl->XNVCTRLQueryTargetAttribute (xnvctrl->dpy, NV_CTRL_TARGET_TYPE_GPU, gpu, 0, NV_CTRL_GPU_COOLER_MANUAL_CONTROL, val); @@ -112,6 +121,10 @@ int get_fan_control (XNVCTRL_PTR *xnvctrl, int gpu, int *val) int set_fan_control (XNVCTRL_PTR *xnvctrl, int gpu, int val) { + if (xnvctrl == NULL) return -1; + + if (xnvctrl->XNVCTRLSetTargetAttribute == NULL) return -1; + if (xnvctrl->dpy == NULL) return -1; int cur; @@ -133,6 +146,10 @@ int set_fan_control (XNVCTRL_PTR *xnvctrl, int gpu, int val) int get_core_threshold (XNVCTRL_PTR *xnvctrl, int gpu, int *val) { + if (xnvctrl == NULL) return -1; + + if (xnvctrl->XNVCTRLQueryTargetAttribute == NULL) return -1; + if (xnvctrl->dpy == NULL) return -1; int rc = xnvctrl->XNVCTRLQueryTargetAttribute (xnvctrl->dpy, NV_CTRL_TARGET_TYPE_GPU, gpu, 0, NV_CTRL_GPU_CORE_THRESHOLD, val); @@ -144,6 +161,10 @@ int get_core_threshold (XNVCTRL_PTR *xnvctrl, int gpu, int *val) int get_fan_speed_current (XNVCTRL_PTR *xnvctrl, int gpu, int *val) { + if (xnvctrl == NULL) return -1; + + if (xnvctrl->XNVCTRLQueryTargetAttribute == NULL) return -1; + if (xnvctrl->dpy == NULL) return -1; int rc = xnvctrl->XNVCTRLQueryTargetAttribute (xnvctrl->dpy, NV_CTRL_TARGET_TYPE_COOLER, gpu, 0, NV_CTRL_THERMAL_COOLER_CURRENT_LEVEL, val); @@ -155,6 +176,10 @@ int get_fan_speed_current (XNVCTRL_PTR *xnvctrl, int gpu, int *val) int get_fan_speed_target (XNVCTRL_PTR *xnvctrl, int gpu, int *val) { + if (xnvctrl == NULL) return -1; + + if (xnvctrl->XNVCTRLQueryTargetAttribute == NULL) return -1; + if (xnvctrl->dpy == NULL) return -1; int rc = xnvctrl->XNVCTRLQueryTargetAttribute (xnvctrl->dpy, NV_CTRL_TARGET_TYPE_COOLER, gpu, 0, NV_CTRL_THERMAL_COOLER_LEVEL, val); @@ -166,6 +191,10 @@ int get_fan_speed_target (XNVCTRL_PTR *xnvctrl, int gpu, int *val) int set_fan_speed_target (XNVCTRL_PTR *xnvctrl, int gpu, int val) { + if (xnvctrl == NULL) return -1; + + if (xnvctrl->XNVCTRLSetTargetAttribute == NULL) return -1; + if (xnvctrl->dpy == NULL) return -1; int cur;