if (hm_NVML_nvmlDeviceGetCurrentClocksThrottleReasons (data.hm_nvml, 1, data.hm_device[device_id].nvml, &clocksThrottleReasons) != NVML_SUCCESS) return -1;
if (hm_NVML_nvmlDeviceGetSupportedClocksThrottleReasons (data.hm_nvml, 1, data.hm_device[device_id].nvml, &supportedThrottleReasons) != NVML_SUCCESS) return -1;
- clocksThrottleReasons &= supportedThrottleReasons;
-
+ clocksThrottleReasons &= supportedThrottleReasons;
+ clocksThrottleReasons &= ~nvmlClocksThrottleReasonGpuIdle;
+ clocksThrottleReasons &= ~nvmlClocksThrottleReasonApplicationsClocksSetting;
clocksThrottleReasons &= ~nvmlClocksThrottleReasonUnknown;
- return (clocksThrottleReasons > 0);
+ if (data.kernel_power_final)
+ {
+ clocksThrottleReasons &= ~nvmlClocksThrottleReasonHwSlowdown;
+ }
+
+ return (clocksThrottleReasons != nvmlClocksThrottleReasonNone);
}
return -1;
case 141: return ((char *) HT_00141); break;
case 150: return ((char *) HT_00150); break;
case 160: return ((char *) HT_00160); break;
- case 190: return ((char *) HT_00190); break;
case 200: return ((char *) HT_00200); break;
case 300: return ((char *) HT_00300); break;
case 400: return ((char *) HT_00400); break;
void myabort ()
{
- if (data.devices_status == STATUS_INIT) return;
- if (data.devices_status == STATUS_STARTING) return;
+ //if (data.devices_status == STATUS_INIT) return;
+ //if (data.devices_status == STATUS_STARTING) return;
data.devices_status = STATUS_ABORTED;
}
void myquit ()
{
- if (data.devices_status == STATUS_INIT) return;
- if (data.devices_status == STATUS_STARTING) return;
+ //if (data.devices_status == STATUS_INIT) return;
+ //if (data.devices_status == STATUS_STARTING) return;
data.devices_status = STATUS_QUIT;
}
+void naive_replace (char *s, const u8 key_char, const u8 replace_char)
+{
+ const size_t len = strlen (s);
+
+ for (size_t in = 0; in < len; in++)
+ {
+ const u8 c = s[in];
+
+ if (c == key_char)
+ {
+ s[in] = replace_char;
+ }
+ }
+}
+
+void naive_escape (char *s, size_t s_max, const u8 key_char, const u8 escape_char)
+{
+ char s_escaped[1024] = { 0 };
+
+ size_t s_escaped_max = sizeof (s_escaped);
+
+ const size_t len = strlen (s);
+
+ for (size_t in = 0, out = 0; in < len; in++, out++)
+ {
+ const u8 c = s[in];
+
+ if (c == key_char)
+ {
+ s_escaped[out] = escape_char;
+
+ out++;
+ }
+
+ if (out == s_escaped_max - 2) break;
+
+ s_escaped[out] = c;
+ }
+
+ strncpy (s, s_escaped, s_max - 1);
+}
+
void load_kernel (const char *kernel_file, int num_devices, size_t *kernel_lengths, const u8 **kernel_sources)
{
FILE *fp = fopen (kernel_file, "rb");
return (PARSER_OK);
}
-int sha1linkedin_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf)
-{
- if ((input_len < DISPLAY_LEN_MIN_100) || (input_len > DISPLAY_LEN_MAX_100)) return (PARSER_GLOBAL_LENGTH);
-
- u32 *digest = (u32 *) hash_buf->digest;
-
- digest[0] = hex_to_u32 ((const u8 *) &input_buf[ 0]);
- digest[1] = hex_to_u32 ((const u8 *) &input_buf[ 8]);
- digest[2] = hex_to_u32 ((const u8 *) &input_buf[16]);
- digest[3] = hex_to_u32 ((const u8 *) &input_buf[24]);
- digest[4] = hex_to_u32 ((const u8 *) &input_buf[32]);
-
- return (PARSER_OK);
-}
-
int sha1axcrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf)
{
if ((input_len < DISPLAY_LEN_MIN_13300) || (input_len > DISPLAY_LEN_MAX_13300)) return (PARSER_GLOBAL_LENGTH);
void *thread_keypress (void *p)
{
- int benchmark = *((int *) p);
-
uint quiet = data.quiet;
tty_break();
log_info ("");
- if (benchmark == 1) break;
-
stop_at_checkpoint ();
log_info ("");
log_info ("");
- if (benchmark == 1)
- {
- myquit ();
- }
- else
- {
- myabort ();
- }
+ myabort ();
break;
}