/**
- * Author......: Jens Steube <jens.steube@gmail.com>
+ * Authors.....: Jens Steube <jens.steube@gmail.com>
+ * Gabriele Gristina <matrix@hashcat.net>
+ *
* License.....: MIT
*/
#endif
+/**
+ * libraries stuff
+ */
+
+#ifdef _WIN
+#define hc_dlopen LoadLibrary
+#define hc_dlclose FreeLibrary
+#define hc_dlsym GetProcAddress
+#else
+#define hc_dlopen dlopen
+#define hc_dlclose dlclose
+#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
/**
#define CL_VENDOR_NV "NVIDIA Corporation"
#define CL_VENDOR_AMD "Advanced Micro Devices, Inc."
+#define CL_VENDOR_APPLE "Apple"
#define CL_VENDOR_POCL "The pocl project"
#define VENDOR_ID_AMD 4098
#define VENDOR_ID_NV 4318
+#define VENDOR_ID_APPLE 16925952
#define VENDOR_ID_GENERIC 9999
#define BLOCK_SIZE 64
* valid project specific global stuff
*/
-extern const char *PROGNAME;
-extern const char *VERSION_TXT;
-
extern const uint VERSION_BIN;
extern const uint RESTORE_MIN;
extern int SUPPRESS_OUTPUT;
-extern hc_thread_mutex_t mux_adl;
-extern hc_thread_mutex_t mux_counter;
-extern hc_thread_mutex_t mux_dispatcher;
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 / loops macro
+ * 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 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
+#define KERNEL_ACCEL_11700 1
+#define KERNEL_ACCEL_11800 1
+#define KERNEL_ACCEL_12200 1
+#define KERNEL_ACCEL_12400 1
+#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
+#define KERNEL_ACCEL_11700 4
+#define KERNEL_ACCEL_11800 4
+#define KERNEL_ACCEL_12200 2
+#define KERNEL_ACCEL_12400 64
+#define KERNEL_ACCEL_12500 8
+#define KERNEL_ACCEL_13000 8
+#endif // OSX
+
#define KERNEL_ACCEL_0 128
#define KERNEL_ACCEL_10 128
#define KERNEL_ACCEL_11 128
#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
#define KERNEL_ACCEL_4700 64
#define KERNEL_ACCEL_4800 128
#define KERNEL_ACCEL_4900 64
-#define KERNEL_ACCEL_5000 64
#define KERNEL_ACCEL_5100 64
#define KERNEL_ACCEL_5200 8
#define KERNEL_ACCEL_5300 32
#define KERNEL_ACCEL_5700 64
#define KERNEL_ACCEL_5800 8
#define KERNEL_ACCEL_6000 64
-#define KERNEL_ACCEL_6100 8
-#define KERNEL_ACCEL_6211 16
#define KERNEL_ACCEL_6212 8
#define KERNEL_ACCEL_6213 8
#define KERNEL_ACCEL_6221 4
#define KERNEL_ACCEL_6222 4
#define KERNEL_ACCEL_6223 4
-#define KERNEL_ACCEL_6231 4
#define KERNEL_ACCEL_6232 4
#define KERNEL_ACCEL_6233 4
-#define KERNEL_ACCEL_6241 32
#define KERNEL_ACCEL_6242 16
#define KERNEL_ACCEL_6243 16
#define KERNEL_ACCEL_6300 8
#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_8200 2
#define KERNEL_ACCEL_8300 64
#define KERNEL_ACCEL_8400 64
#define KERNEL_ACCEL_8500 64
#define KERNEL_ACCEL_8600 8
-#define KERNEL_ACCEL_8700 8
#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_9500 8
-#define KERNEL_ACCEL_9600 2
#define KERNEL_ACCEL_9700 8
#define KERNEL_ACCEL_9710 8
#define KERNEL_ACCEL_9720 8
#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
#define KERNEL_ACCEL_10400 8
#define KERNEL_ACCEL_10410 8
#define KERNEL_ACCEL_10420 8
-#define KERNEL_ACCEL_10500 64
#define KERNEL_ACCEL_10600 64
#define KERNEL_ACCEL_10700 1
#define KERNEL_ACCEL_10800 64
#define KERNEL_ACCEL_11000 64
#define KERNEL_ACCEL_11100 64
#define KERNEL_ACCEL_11200 64
-#define KERNEL_ACCEL_11300 2
#define KERNEL_ACCEL_11400 8
#define KERNEL_ACCEL_11500 128
-#define KERNEL_ACCEL_11600 2
-#define KERNEL_ACCEL_11700 4
-#define KERNEL_ACCEL_11800 4
#define KERNEL_ACCEL_11900 2
#define KERNEL_ACCEL_12000 2
#define KERNEL_ACCEL_12100 2
-#define KERNEL_ACCEL_12200 2
#define KERNEL_ACCEL_12300 2
-#define KERNEL_ACCEL_12400 64
-#define KERNEL_ACCEL_12500 8
#define KERNEL_ACCEL_12600 32
#define KERNEL_ACCEL_12700 64
#define KERNEL_ACCEL_12800 64
#define KERNEL_ACCEL_12900 8
-#define KERNEL_ACCEL_13000 8
+/**
+ * device loops macro
+ */
+
+#ifdef OSX
+#define KERNEL_LOOPS_0 2
+#define KERNEL_LOOPS_10 2
+#define KERNEL_LOOPS_11 2
+#define KERNEL_LOOPS_12 2
+#define KERNEL_LOOPS_20 2
+#define KERNEL_LOOPS_21 2
+#define KERNEL_LOOPS_22 2
+#define KERNEL_LOOPS_23 2
+#define KERNEL_LOOPS_30 2
+#define KERNEL_LOOPS_40 2
+#define KERNEL_LOOPS_50 2
+#define KERNEL_LOOPS_60 2
+#define KERNEL_LOOPS_100 2
+#define KERNEL_LOOPS_101 2
+#define KERNEL_LOOPS_110 2
+#define KERNEL_LOOPS_111 2
+#define KERNEL_LOOPS_112 2
+#define KERNEL_LOOPS_120 2
+#define KERNEL_LOOPS_121 2
+#define KERNEL_LOOPS_122 2
+#define KERNEL_LOOPS_124 2
+#define KERNEL_LOOPS_130 2
+#define KERNEL_LOOPS_131 2
+#define KERNEL_LOOPS_132 2
+#define KERNEL_LOOPS_133 2
+#define KERNEL_LOOPS_140 2
+#define KERNEL_LOOPS_141 2
+#define KERNEL_LOOPS_150 2
+#define KERNEL_LOOPS_160 2
+#define KERNEL_LOOPS_190 2
+#define KERNEL_LOOPS_200 2
+#define KERNEL_LOOPS_300 2
+#define KERNEL_LOOPS_900 2
+#define KERNEL_LOOPS_1000 2
+#define KERNEL_LOOPS_1100 2
+#define KERNEL_LOOPS_1400 2
+#define KERNEL_LOOPS_1410 2
+#define KERNEL_LOOPS_1420 2
+#define KERNEL_LOOPS_1421 2
+#define KERNEL_LOOPS_1430 2
+#define KERNEL_LOOPS_1440 2
+#define KERNEL_LOOPS_1441 2
+#define KERNEL_LOOPS_1450 2
+#define KERNEL_LOOPS_1460 2
+#define KERNEL_LOOPS_1700 2
+#define KERNEL_LOOPS_1710 2
+#define KERNEL_LOOPS_1711 2
+#define KERNEL_LOOPS_1720 2
+#define KERNEL_LOOPS_1722 2
+#define KERNEL_LOOPS_1730 2
+#define KERNEL_LOOPS_1731 2
+#define KERNEL_LOOPS_1740 2
+#define KERNEL_LOOPS_1750 2
+#define KERNEL_LOOPS_1760 2
+#define KERNEL_LOOPS_2400 2
+#define KERNEL_LOOPS_2410 2
+#define KERNEL_LOOPS_2600 2
+#define KERNEL_LOOPS_2611 2
+#define KERNEL_LOOPS_2612 2
+#define KERNEL_LOOPS_2711 2
+#define KERNEL_LOOPS_2811 2
+#define KERNEL_LOOPS_3100 2
+#define KERNEL_LOOPS_3200 2
+#define KERNEL_LOOPS_3710 2
+#define KERNEL_LOOPS_3711 2
+#define KERNEL_LOOPS_3800 2
+#define KERNEL_LOOPS_4300 2
+#define KERNEL_LOOPS_4400 2
+#define KERNEL_LOOPS_4500 2
+#define KERNEL_LOOPS_4700 2
+#define KERNEL_LOOPS_4800 2
+#define KERNEL_LOOPS_4900 2
+#define KERNEL_LOOPS_5000 2
+#define KERNEL_LOOPS_5100 2
+#define KERNEL_LOOPS_5300 2
+#define KERNEL_LOOPS_5400 2
+#define KERNEL_LOOPS_5500 2
+#define KERNEL_LOOPS_5600 2
+#define KERNEL_LOOPS_5700 2
+#define KERNEL_LOOPS_6000 2
+#define KERNEL_LOOPS_6100 2
+#define KERNEL_LOOPS_6231 2
+#define KERNEL_LOOPS_6232 2
+#define KERNEL_LOOPS_6233 2
+#define KERNEL_LOOPS_6900 2
+#define KERNEL_LOOPS_7300 2
+#define KERNEL_LOOPS_7500 2
+#define KERNEL_LOOPS_7600 2
+#define KERNEL_LOOPS_7700 2
+#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 2
+#define KERNEL_LOOPS_9700 2
+#define KERNEL_LOOPS_9710 2
+#define KERNEL_LOOPS_9720 8
+#define KERNEL_LOOPS_9800 2
+#define KERNEL_LOOPS_9810 2
+#define KERNEL_LOOPS_9820 2
+#define KERNEL_LOOPS_9900 2
+#define KERNEL_LOOPS_10100 2
+#define KERNEL_LOOPS_10200 2
+#define KERNEL_LOOPS_10400 2
+#define KERNEL_LOOPS_10410 2
+#define KERNEL_LOOPS_10420 2
+#define KERNEL_LOOPS_10600 2
+#define KERNEL_LOOPS_10700 2
+#define KERNEL_LOOPS_10800 2
+#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 2
+#define KERNEL_LOOPS_11800 2
+#define KERNEL_LOOPS_12600 2
+#else
#define KERNEL_LOOPS_0 256
#define KERNEL_LOOPS_10 256
#define KERNEL_LOOPS_11 256
#define KERNEL_LOOPS_190 128
#define KERNEL_LOOPS_200 128
#define KERNEL_LOOPS_300 64
-#define KERNEL_LOOPS_400 256
-#define KERNEL_LOOPS_500 256
-#define KERNEL_LOOPS_501 256
#define KERNEL_LOOPS_900 256
-#define KERNEL_LOOPS_910 256
#define KERNEL_LOOPS_1000 256
#define KERNEL_LOOPS_1100 128
#define KERNEL_LOOPS_1400 64
#define KERNEL_LOOPS_1441 64
#define KERNEL_LOOPS_1450 32
#define KERNEL_LOOPS_1460 32
-#define KERNEL_LOOPS_1500 256
-#define KERNEL_LOOPS_1600 256
#define KERNEL_LOOPS_1700 32
#define KERNEL_LOOPS_1710 32
#define KERNEL_LOOPS_1711 32
#define KERNEL_LOOPS_1740 32
#define KERNEL_LOOPS_1750 16
#define KERNEL_LOOPS_1760 16
-#define KERNEL_LOOPS_1800 16
-#define KERNEL_LOOPS_2100 256
#define KERNEL_LOOPS_2400 256
#define KERNEL_LOOPS_2410 256
-#define KERNEL_LOOPS_2500 256
#define KERNEL_LOOPS_2600 128
#define KERNEL_LOOPS_2611 128
#define KERNEL_LOOPS_2612 128
#define KERNEL_LOOPS_2711 64
#define KERNEL_LOOPS_2811 64
-#define KERNEL_LOOPS_3000 256
#define KERNEL_LOOPS_3100 16
#define KERNEL_LOOPS_3200 16
#define KERNEL_LOOPS_3710 128
#define KERNEL_LOOPS_4900 128
#define KERNEL_LOOPS_5000 64
#define KERNEL_LOOPS_5100 256
-#define KERNEL_LOOPS_5200 256
#define KERNEL_LOOPS_5300 32
#define KERNEL_LOOPS_5400 32
#define KERNEL_LOOPS_5500 128
#define KERNEL_LOOPS_5600 64
#define KERNEL_LOOPS_5700 64
-#define KERNEL_LOOPS_5800 256
#define KERNEL_LOOPS_6000 64
#define KERNEL_LOOPS_6100 64
-#define KERNEL_LOOPS_6211 200
-#define KERNEL_LOOPS_6212 200
-#define KERNEL_LOOPS_6213 200
-#define KERNEL_LOOPS_6221 200
-#define KERNEL_LOOPS_6222 200
-#define KERNEL_LOOPS_6223 200
#define KERNEL_LOOPS_6231 200
#define KERNEL_LOOPS_6232 200
#define KERNEL_LOOPS_6233 200
-#define KERNEL_LOOPS_6241 200
-#define KERNEL_LOOPS_6242 200
-#define KERNEL_LOOPS_6243 200
-#define KERNEL_LOOPS_6300 256
-#define KERNEL_LOOPS_6400 256
-#define KERNEL_LOOPS_6500 256
-#define KERNEL_LOOPS_6600 200
-#define KERNEL_LOOPS_6700 256
-#define KERNEL_LOOPS_6800 200
#define KERNEL_LOOPS_6900 64
-#define KERNEL_LOOPS_7100 256
-#define KERNEL_LOOPS_7200 200
#define KERNEL_LOOPS_7300 64
-#define KERNEL_LOOPS_7400 200
#define KERNEL_LOOPS_7500 16
#define KERNEL_LOOPS_7600 128
#define KERNEL_LOOPS_7700 128
#define KERNEL_LOOPS_7800 64
-#define KERNEL_LOOPS_7900 256
#define KERNEL_LOOPS_8000 64
#define KERNEL_LOOPS_8100 128
#define KERNEL_LOOPS_8200 200
#define KERNEL_LOOPS_8500 16
#define KERNEL_LOOPS_8600 16
#define KERNEL_LOOPS_8700 16
-#define KERNEL_LOOPS_8800 256
-#define KERNEL_LOOPS_8900 1
-#define KERNEL_LOOPS_9000 16
-#define KERNEL_LOOPS_9100 256
-#define KERNEL_LOOPS_9200 200
-#define KERNEL_LOOPS_9300 1
-#define KERNEL_LOOPS_9400 200
-#define KERNEL_LOOPS_9500 200
-#define KERNEL_LOOPS_9600 200
#define KERNEL_LOOPS_9700 200
#define KERNEL_LOOPS_9710 200
#define KERNEL_LOOPS_9720 200
#define KERNEL_LOOPS_9800 200
-#define KERNEL_LOOPS_9810 200
#define KERNEL_LOOPS_9820 200
+#define KERNEL_LOOPS_9810 200
#define KERNEL_LOOPS_9900 256
-#define KERNEL_LOOPS_10000 200
#define KERNEL_LOOPS_10100 512
#define KERNEL_LOOPS_10200 64
-#define KERNEL_LOOPS_10300 128
#define KERNEL_LOOPS_10400 256
#define KERNEL_LOOPS_10410 256
#define KERNEL_LOOPS_10420 256
-#define KERNEL_LOOPS_10500 64
#define KERNEL_LOOPS_10600 64
#define KERNEL_LOOPS_10700 64
#define KERNEL_LOOPS_10800 32
-#define KERNEL_LOOPS_10900 200
#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_11600 512
#define KERNEL_LOOPS_11700 64
#define KERNEL_LOOPS_11800 64
+#define KERNEL_LOOPS_12600 32
+#endif // OSX
+
+#define KERNEL_LOOPS_400 256
+#define KERNEL_LOOPS_500 256
+#define KERNEL_LOOPS_501 256
+#define KERNEL_LOOPS_910 256
+#define KERNEL_LOOPS_1500 256
+#define KERNEL_LOOPS_1600 256
+#define KERNEL_LOOPS_1800 16
+#define KERNEL_LOOPS_2100 256
+#define KERNEL_LOOPS_2500 256
+#define KERNEL_LOOPS_3000 256
+#define KERNEL_LOOPS_5200 256
+#define KERNEL_LOOPS_5800 256
+#define KERNEL_LOOPS_6211 200
+#define KERNEL_LOOPS_6212 200
+#define KERNEL_LOOPS_6213 200
+#define KERNEL_LOOPS_6221 200
+#define KERNEL_LOOPS_6222 200
+#define KERNEL_LOOPS_6223 200
+#define KERNEL_LOOPS_6241 200
+#define KERNEL_LOOPS_6242 200
+#define KERNEL_LOOPS_6243 200
+#define KERNEL_LOOPS_6300 256
+#define KERNEL_LOOPS_6400 256
+#define KERNEL_LOOPS_6500 256
+#define KERNEL_LOOPS_6600 200
+#define KERNEL_LOOPS_6700 256
+#define KERNEL_LOOPS_6800 200
+#define KERNEL_LOOPS_7100 256
+#define KERNEL_LOOPS_7200 200
+#define KERNEL_LOOPS_7400 200
+#define KERNEL_LOOPS_7900 256
+#define KERNEL_LOOPS_8800 256
+#define KERNEL_LOOPS_8900 1
+#define KERNEL_LOOPS_9000 16
+#define KERNEL_LOOPS_9100 256
+#define KERNEL_LOOPS_9200 200
+#define KERNEL_LOOPS_9300 1
+#define KERNEL_LOOPS_9400 200
+#define KERNEL_LOOPS_9500 200
+#define KERNEL_LOOPS_9600 200
+#define KERNEL_LOOPS_10000 200
+#define KERNEL_LOOPS_10300 128
+#define KERNEL_LOOPS_10500 64
+#define KERNEL_LOOPS_10900 200
+#define KERNEL_LOOPS_11600 512
#define KERNEL_LOOPS_11900 200
#define KERNEL_LOOPS_12000 200
#define KERNEL_LOOPS_12100 200
#define KERNEL_LOOPS_12300 256
#define KERNEL_LOOPS_12400 256
#define KERNEL_LOOPS_12500 256
-#define KERNEL_LOOPS_12600 32
#define KERNEL_LOOPS_12700 10
#define KERNEL_LOOPS_12800 100
#define KERNEL_LOOPS_12900 64
#define OPTI_TYPE_SINGLE_HASH (1 << 11)
#define OPTI_TYPE_SINGLE_SALT (1 << 12)
#define OPTI_TYPE_BRUTE_FORCE (1 << 13)
-#define OPTI_TYPE_RAW_HASH (1 << 15)
+#define OPTI_TYPE_RAW_HASH (1 << 14)
+#define OPTI_TYPE_USES_BITS_8 (1 << 15)
+#define OPTI_TYPE_USES_BITS_16 (1 << 16)
+#define OPTI_TYPE_USES_BITS_32 (1 << 17)
+#define OPTI_TYPE_USES_BITS_64 (1 << 18)
#define OPTI_STR_ZERO_BYTE "Zero-Byte"
#define OPTI_STR_PRECOMPUTE_INIT "Precompute-Init"
*/
#define DGST_SIZE_0 0
-#define DGST_SIZE_4_2 (2 * sizeof (uint)) // 8
-#define DGST_SIZE_4_4 (4 * sizeof (uint)) // 16
-#define DGST_SIZE_4_5 (5 * sizeof (uint)) // 20
-#define DGST_SIZE_4_6 (6 * sizeof (uint)) // 24
-#define DGST_SIZE_4_8 (8 * sizeof (uint)) // 32
-#define DGST_SIZE_4_16 (16 * sizeof (uint)) // 64 !!!
-#define DGST_SIZE_4_32 (32 * sizeof (uint)) // 128 !!!
-#define DGST_SIZE_4_64 (64 * sizeof (uint)) // 256
+#define DGST_SIZE_4_2 (2 * sizeof (uint)) // 8
+#define DGST_SIZE_4_4 (4 * sizeof (uint)) // 16
+#define DGST_SIZE_4_5 (5 * sizeof (uint)) // 20
+#define DGST_SIZE_4_6 (6 * sizeof (uint)) // 24
+#define DGST_SIZE_4_8 (8 * sizeof (uint)) // 32
+#define DGST_SIZE_4_16 (16 * sizeof (uint)) // 64 !!!
+#define DGST_SIZE_4_32 (32 * sizeof (uint)) // 128 !!!
+#define DGST_SIZE_4_64 (64 * sizeof (uint)) // 256
#define DGST_SIZE_8_8 (8 * sizeof (u64)) // 64 !!!
#define DGST_SIZE_8_16 (16 * sizeof (u64)) // 128 !!!
#define DGST_SIZE_8_25 (25 * sizeof (u64)) // 200
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
-int hm_get_adapter_index_nv (HM_ADAPTER_NV nvGPUHandle[DEVICES_MAX]);
-
-int get_adapters_num_amd (HM_LIB hm_dll_amd, int *iNumberAdapters);
+#ifdef HAVE_HWMON
-int hm_get_device_num (HM_LIB hm_dll_amd, HM_ADAPTER_AMD hm_adapter_index, int *hm_device_num);
+#if defined(HAVE_NVML) || defined(HAVE_NVAPI)
+int hm_get_adapter_index_nv (HM_ADAPTER_NV nvGPUHandle[DEVICES_MAX]);
+#endif
-// 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 (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);
-
-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);
+// 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);
int hm_set_fanspeed_with_device_id_amd (const uint device_id, const int fanspeed);
void hm_device_val_to_str (char *target_buf, int max_buf_size, char *suffix, int value);
+#endif // HAVE_HWMON
void myabort ();
void myquit ();
#include "cpu-aes.h"
-#endif
+#endif // SHARED_H