Some cleanups
[hashcat.git] / include / shared.h
index e92abe4..c10c7d2 100644 (file)
 #define hc_dlsym dlsym
 #endif
 
+#define HC_LOAD_FUNC(ptr,name,type,libname,noerr) \
+  ptr->name = (type) hc_dlsym (ptr->lib, #name); \
+  if (!ptr->name) { \
+    if (noerr == 1) { \
+      log_error ("ERROR: %s is missing from %s shared library.", #name, #libname); \
+      exit (-1); \
+    } else { \
+      log_info ("WARNING: %s is missing from %s shared library.", #name, #libname); \
+      return (-1); \
+    } \
+  }
+
+#define HC_LOAD_ADDR(ptr,name,type,func,addr,libname,noerr) \
+  ptr->name = (type) (*ptr->func) (addr); \
+  if (!ptr->name) { \
+    if (noerr == 1) { \
+      log_error ("ERROR: %s at address %08x is missing from %s shared library.", #name, addr, #libname); \
+      exit (-1); \
+    } else { \
+      log_error ("WARNING: %s at address %08x is missing from %s shared library.", #name, addr, #libname); \
+      return (-1); \
+    } \
+  }
+
 /**
  * system stuff
  */
  * temperature management
  */
 
-#ifdef LINUX
-#include <ext_nvml.h>
+#if _WIN
 #include <ext_ADL.h>
-#endif
-
-#ifdef WIN
 #include <ext_nvapi.h>
+#else
 #include <ext_ADL.h>
-#endif
-
-#ifdef OSX
-#include <ext_smi.h>
-#include <ext_dummy.h>
+#include <ext_nvml.h>
 #endif
 
 /**
@@ -165,37 +182,48 @@ extern hc_thread_mutex_t mux_display;
  * password lengths supported
  */
 
-#define PW_LENGTH_MIN_0       0
-#define PW_LENGTH_MAX_0       55
-#define PW_LENGTH_MIN_400     0
-#define PW_LENGTH_MAX_400     40
-#define PW_LENGTH_MIN_500     0
-#define PW_LENGTH_MAX_500     15
-#define PW_LENGTH_MIN_1600    0
-#define PW_LENGTH_MAX_1600    15
-#define PW_LENGTH_MIN_1800    0
-#define PW_LENGTH_MAX_1800    15
-#define PW_LENGTH_MIN_2500    0
-#define PW_LENGTH_MAX_2500    64
-#define PW_LENGTH_MIN_6300    0
-#define PW_LENGTH_MAX_6300    15
-#define PW_LENGTH_MIN_7400    0
-#define PW_LENGTH_MAX_7400    15
+#define PW_LENGTH_MIN_0      0
+#define PW_LENGTH_MAX_0      55
+#define PW_LENGTH_MIN_400    0
+#define PW_LENGTH_MAX_400    40
+#define PW_LENGTH_MIN_500    0
+#define PW_LENGTH_MAX_500    15
+#define PW_LENGTH_MIN_1600   0
+#define PW_LENGTH_MAX_1600   15
+#define PW_LENGTH_MIN_1800   0
+#define PW_LENGTH_MAX_1800   15
+#define PW_LENGTH_MIN_2500   0
+#define PW_LENGTH_MAX_2500   64
+#define PW_LENGTH_MIN_6300   0
+#define PW_LENGTH_MAX_6300   15
+#define PW_LENGTH_MIN_7400   0
+#define PW_LENGTH_MAX_7400   15
 
 /**
  * device accel macro
  */
 
 #ifdef OSX
+#define KERNEL_ACCEL_1800    1
+#define KERNEL_ACCEL_2500    2
 #define KERNEL_ACCEL_5000    16
 #define KERNEL_ACCEL_6100    1
-#define KERNEL_ACCEL_6211    4
+#define KERNEL_ACCEL_6211    2
 #define KERNEL_ACCEL_6231    1
 #define KERNEL_ACCEL_6241    4
+#define KERNEL_ACCEL_6800    2
+#define KERNEL_ACCEL_7100    1
+#define KERNEL_ACCEL_7200    1
+#define KERNEL_ACCEL_7900    1
 #define KERNEL_ACCEL_8200    1
 #define KERNEL_ACCEL_8700    2
+#define KERNEL_ACCEL_9100    4
+#define KERNEL_ACCEL_9200    1
+#define KERNEL_ACCEL_9300    1
+#define KERNEL_ACCEL_9400    1
 #define KERNEL_ACCEL_9500    1
 #define KERNEL_ACCEL_9600    1
+#define KERNEL_ACCEL_10000   1
 #define KERNEL_ACCEL_10500   4
 #define KERNEL_ACCEL_11300   1
 #define KERNEL_ACCEL_11600   1
@@ -206,15 +234,26 @@ extern hc_thread_mutex_t mux_display;
 #define KERNEL_ACCEL_12500   1
 #define KERNEL_ACCEL_13000   1
 #else
+#define KERNEL_ACCEL_1800    2
+#define KERNEL_ACCEL_2500    8
 #define KERNEL_ACCEL_5000    64
 #define KERNEL_ACCEL_6100    8
 #define KERNEL_ACCEL_6211    16
 #define KERNEL_ACCEL_6231    4
 #define KERNEL_ACCEL_6241    32
+#define KERNEL_ACCEL_6800    8
+#define KERNEL_ACCEL_7100    2
+#define KERNEL_ACCEL_7200    2
+#define KERNEL_ACCEL_7900    2
 #define KERNEL_ACCEL_8200    2
 #define KERNEL_ACCEL_8700    8
+#define KERNEL_ACCEL_9100    8
+#define KERNEL_ACCEL_9200    2
+#define KERNEL_ACCEL_9300    2
+#define KERNEL_ACCEL_9400    8
 #define KERNEL_ACCEL_9500    8
 #define KERNEL_ACCEL_9600    2
+#define KERNEL_ACCEL_10000   2
 #define KERNEL_ACCEL_10500   64
 #define KERNEL_ACCEL_11300   2
 #define KERNEL_ACCEL_11600   2
@@ -286,11 +325,9 @@ extern hc_thread_mutex_t mux_display;
 #define KERNEL_ACCEL_1740    64
 #define KERNEL_ACCEL_1750    32
 #define KERNEL_ACCEL_1760    32
-#define KERNEL_ACCEL_1800    2
 #define KERNEL_ACCEL_2100    8
 #define KERNEL_ACCEL_2400    64
 #define KERNEL_ACCEL_2410    64
-#define KERNEL_ACCEL_2500    8
 #define KERNEL_ACCEL_2600    64
 #define KERNEL_ACCEL_2611    64
 #define KERNEL_ACCEL_2612    64
@@ -331,17 +368,13 @@ extern hc_thread_mutex_t mux_display;
 #define KERNEL_ACCEL_6500    8
 #define KERNEL_ACCEL_6600    8
 #define KERNEL_ACCEL_6700    8
-#define KERNEL_ACCEL_6800    8
 #define KERNEL_ACCEL_6900    16
-#define KERNEL_ACCEL_7100    2
-#define KERNEL_ACCEL_7200    2
 #define KERNEL_ACCEL_7300    64
 #define KERNEL_ACCEL_7400    2
 #define KERNEL_ACCEL_7500    8
 #define KERNEL_ACCEL_7600    64
 #define KERNEL_ACCEL_7700    16
 #define KERNEL_ACCEL_7800    8
-#define KERNEL_ACCEL_7900    2
 #define KERNEL_ACCEL_8000    8
 #define KERNEL_ACCEL_8100    64
 #define KERNEL_ACCEL_8300    64
@@ -351,10 +384,6 @@ extern hc_thread_mutex_t mux_display;
 #define KERNEL_ACCEL_8800    8
 #define KERNEL_ACCEL_8900    16
 #define KERNEL_ACCEL_9000    2
-#define KERNEL_ACCEL_9100    8
-#define KERNEL_ACCEL_9200    2
-#define KERNEL_ACCEL_9300    2
-#define KERNEL_ACCEL_9400    8
 #define KERNEL_ACCEL_9700    8
 #define KERNEL_ACCEL_9710    8
 #define KERNEL_ACCEL_9720    8
@@ -362,7 +391,6 @@ extern hc_thread_mutex_t mux_display;
 #define KERNEL_ACCEL_9810    8
 #define KERNEL_ACCEL_9820    8
 #define KERNEL_ACCEL_9900    64
-#define KERNEL_ACCEL_10000   2
 #define KERNEL_ACCEL_10100   128
 #define KERNEL_ACCEL_10200   64
 #define KERNEL_ACCEL_10300   8
@@ -454,7 +482,7 @@ extern hc_thread_mutex_t mux_display;
 #define KERNEL_LOOPS_2711    2
 #define KERNEL_LOOPS_2811    2
 #define KERNEL_LOOPS_3100    2
-#define KERNEL_LOOPS_3200    4
+#define KERNEL_LOOPS_3200    2
 #define KERNEL_LOOPS_3710    2
 #define KERNEL_LOOPS_3711    2
 #define KERNEL_LOOPS_3800    2
@@ -484,13 +512,14 @@ extern hc_thread_mutex_t mux_display;
 #define KERNEL_LOOPS_7800    2
 #define KERNEL_LOOPS_8000    2
 #define KERNEL_LOOPS_8100    2
+#define KERNEL_LOOPS_8200    1
 #define KERNEL_LOOPS_8300    2
 #define KERNEL_LOOPS_8400    2
 #define KERNEL_LOOPS_8500    2
 #define KERNEL_LOOPS_8600    2
-#define KERNEL_LOOPS_8700    4
+#define KERNEL_LOOPS_8700    2
 #define KERNEL_LOOPS_9700    2
-#define KERNEL_LOOPS_9710    8
+#define KERNEL_LOOPS_9710    2
 #define KERNEL_LOOPS_9720    8
 #define KERNEL_LOOPS_9800    2
 #define KERNEL_LOOPS_9810    2
@@ -507,10 +536,11 @@ extern hc_thread_mutex_t mux_display;
 #define KERNEL_LOOPS_11000   2
 #define KERNEL_LOOPS_11100   2
 #define KERNEL_LOOPS_11200   2
+#define KERNEL_LOOPS_11300   1
 #define KERNEL_LOOPS_11400   2
 #define KERNEL_LOOPS_11500   2
-#define KERNEL_LOOPS_11700   8
-#define KERNEL_LOOPS_11800   8
+#define KERNEL_LOOPS_11700   2
+#define KERNEL_LOOPS_11800   2
 #define KERNEL_LOOPS_12600   2
 #else
 #define KERNEL_LOOPS_0       256
@@ -605,6 +635,7 @@ extern hc_thread_mutex_t mux_display;
 #define KERNEL_LOOPS_7800    64
 #define KERNEL_LOOPS_8000    64
 #define KERNEL_LOOPS_8100    128
+#define KERNEL_LOOPS_8200    200
 #define KERNEL_LOOPS_8300    64
 #define KERNEL_LOOPS_8400    64
 #define KERNEL_LOOPS_8500    16
@@ -628,6 +659,7 @@ extern hc_thread_mutex_t mux_display;
 #define KERNEL_LOOPS_11000   256
 #define KERNEL_LOOPS_11100   128
 #define KERNEL_LOOPS_11200   128
+#define KERNEL_LOOPS_11300   256
 #define KERNEL_LOOPS_11400   128
 #define KERNEL_LOOPS_11500   256
 #define KERNEL_LOOPS_11700   64
@@ -666,7 +698,6 @@ extern hc_thread_mutex_t mux_display;
 #define KERNEL_LOOPS_7200    200
 #define KERNEL_LOOPS_7400    200
 #define KERNEL_LOOPS_7900    256
-#define KERNEL_LOOPS_8200    200
 #define KERNEL_LOOPS_8800    256
 #define KERNEL_LOOPS_8900    1
 #define KERNEL_LOOPS_9000    16
@@ -680,7 +711,6 @@ extern hc_thread_mutex_t mux_display;
 #define KERNEL_LOOPS_10300   128
 #define KERNEL_LOOPS_10500   64
 #define KERNEL_LOOPS_10900   200
-#define KERNEL_LOOPS_11300   256
 #define KERNEL_LOOPS_11600   512
 #define KERNEL_LOOPS_11900   200
 #define KERNEL_LOOPS_12000   200
@@ -1832,6 +1862,14 @@ char *logfile_generate_topid ();
 char *logfile_generate_subid ();
 void logfile_append (const char *fmt, ...);
 
+#if F_SETLKW
+void lock_file (FILE *fp);
+void unlock_file (FILE *fp);
+#else
+#define lock_file(dummy) {}
+#define unlock_file(dummy) {}
+#endif
+
 #ifdef _WIN
 void fsync (int fd);
 #endif
@@ -1842,28 +1880,21 @@ void fsync (int fd);
 int hm_get_adapter_index_nv (HM_ADAPTER_NV nvGPUHandle[DEVICES_MAX]);
 #endif
 
-// int hm_get_device_num (HM_LIB hm_dll_amd, HM_ADAPTER_AMD hm_adapter_index, int *hm_device_num);
-
-// void hm_get_opencl_busid_devid (hm_attrs_t *hm_device, uint opencl_num_devices, cl_device_id *devices);
-
 #ifdef HAVE_ADL
-int get_adapters_num_amd (HM_LIB hm_dll_amd, int *iNumberAdapters);
+int get_adapters_num_amd (void *adl, int *iNumberAdapters);
 
 int hm_get_adapter_index_amd (hm_attrs_t *hm_device, u32 *valid_adl_device_list, int num_adl_adapters, LPAdapterInfo lpAdapterInfo);
 
-LPAdapterInfo hm_get_adapter_info_amd (HM_LIB hm_dll_amd, int iNumberAdapters);
+LPAdapterInfo hm_get_adapter_info_amd (void *adl, int iNumberAdapters);
 
 u32 *hm_get_list_valid_adl_adapters (int iNumberAdapters, int *num_adl_adapters, LPAdapterInfo lpAdapterInfo);
 
-int hm_get_overdrive_version  (HM_LIB hm_dll_amd, hm_attrs_t *hm_device, u32 *valid_adl_device_list, int num_adl_adapters, LPAdapterInfo lpAdapterInfo);
-int hm_check_fanspeed_control (HM_LIB hm_dll_amd, hm_attrs_t *hm_device, u32 *valid_adl_device_list, int num_adl_adapters, LPAdapterInfo lpAdapterInfo);
-#endif // HAVE_ADL
-
-#if defined(HAVE_ADL) || defined(HAVE_NVML)
-void hm_close (HM_LIB hm_dll);
+int hm_get_overdrive_version  (void *adl, hm_attrs_t *hm_device, u32 *valid_adl_device_list, int num_adl_adapters, LPAdapterInfo lpAdapterInfo);
+int hm_check_fanspeed_control (void *adl, hm_attrs_t *hm_device, u32 *valid_adl_device_list, int num_adl_adapters, LPAdapterInfo lpAdapterInfo);
 
-HM_LIB hm_init (const cl_uint vendor_id);
-#endif
+// int hm_get_device_num (void *adl, HM_ADAPTER_AMD hm_adapter_index, int *hm_device_num);
+// void hm_get_opencl_busid_devid (hm_attrs_t *hm_device, uint opencl_num_devices, cl_device_id *devices);
+#endif // HAVE_ADL
 
 int hm_get_temperature_with_device_id (const uint device_id);
 int hm_get_fanspeed_with_device_id    (const uint device_id);