X-Git-Url: https://www.flypig.org.uk/git/?a=blobdiff_plain;f=src%2Fshared.c;h=e7d5dc399bb76fd56c245ca064475dcc08ad8450;hb=72abe90e10fd0bae7905c1009f356c7c38a587ef;hp=df14f43ab52e4ed0c946a846a53d4bda5463d76f;hpb=450b779b912f57216eb833ed29f2836b3a1ff9ef;p=hashcat.git diff --git a/src/shared.c b/src/shared.c index df14f43..e7d5dc3 100644 --- a/src/shared.c +++ b/src/shared.c @@ -10,6 +10,11 @@ #include #endif +#ifdef __FreeBSD__ +#include +#include +#endif + #include #include @@ -2382,7 +2387,7 @@ int tty_fix() } #endif -#ifdef DARWIN +#if defined(DARWIN) || defined(__FreeBSD__) static struct termios savemodes; static int havemodes = 0; @@ -4371,6 +4376,23 @@ char *get_exec_path () const int len = strlen (exec_path); + #elif __FreeBSD__ + + #include + + int mib[4]; + mib[0] = CTL_KERN; + mib[1] = KERN_PROC; + mib[2] = KERN_PROC_PATHNAME; + mib[3] = -1; + + char tmp[32] = { 0 }; + + size_t size = exec_path_len; + sysctl(mib, 4, exec_path, &size, NULL, 0); + + const int len = readlink (tmp, exec_path, exec_path_len - 1); + #else #error Your Operating System is not supported or detected #endif @@ -4523,6 +4545,9 @@ void set_cpu_affinity (char *cpu_affinity) { #ifdef _WIN DWORD_PTR aff_mask = 0; + #elif __FreeBSD__ + cpuset_t cpuset; + CPU_ZERO (&cpuset); #elif _POSIX cpu_set_t cpuset; CPU_ZERO (&cpuset); @@ -4570,6 +4595,9 @@ void set_cpu_affinity (char *cpu_affinity) #ifdef _WIN SetProcessAffinityMask (GetCurrentProcess (), aff_mask); SetThreadAffinityMask (GetCurrentThread (), aff_mask); + #elif __FreeBSD__ + pthread_t thread = pthread_self (); + pthread_setaffinity_np (thread, sizeof (cpuset_t), &cpuset); #elif _POSIX pthread_t thread = pthread_self (); pthread_setaffinity_np (thread, sizeof (cpu_set_t), &cpuset);