diff options
author | Johnny Sorocil <propaliidealist@gmail.com> | 2018-05-05 13:02:44 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2018-05-05 13:02:44 +0200 |
commit | e3575a86c525f2511902e7022893c3923ba8093e (patch) | |
tree | 0c0a7c7578fcc9c220a2b3c29f6c5dcaccda3e98 /kernel/driver.cc | |
parent | 145c685de03a0b5f70a3aa821ea1bd221c31d993 (diff) | |
download | yosys-e3575a86c525f2511902e7022893c3923ba8093e.tar.gz yosys-e3575a86c525f2511902e7022893c3923ba8093e.tar.bz2 yosys-e3575a86c525f2511902e7022893c3923ba8093e.zip |
Add "#ifdef __FreeBSD__"
Diffstat (limited to 'kernel/driver.cc')
-rw-r--r-- | kernel/driver.cc | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/kernel/driver.cc b/kernel/driver.cc index 7a1dce497..bec872c24 100644 --- a/kernel/driver.cc +++ b/kernel/driver.cc @@ -34,12 +34,17 @@ #include <limits.h> #include <errno.h> -#ifdef __linux__ +#if defined (__linux__) || defined(__FreeBSD__) # include <sys/resource.h> # include <sys/types.h> # include <unistd.h> #endif +#ifdef __FreeBSD__ +# include <sys/sysctl.h> +# include <sys/user.h> +#endif + #if !defined(_WIN32) || defined(__MINGW32__) # include <unistd.h> #else @@ -510,7 +515,7 @@ int main(int argc, char **argv) #else std::string meminfo; std::string stats_divider = ", "; -# ifdef __linux__ +# if defined(__linux__) std::ifstream statm; statm.open(stringf("/proc/%lld/statm", (long long)getpid())); if (statm.is_open()) { @@ -521,6 +526,19 @@ int main(int argc, char **argv) sz_resident * (getpagesize() / 1024.0 / 1024.0)); stats_divider = "\n"; } +# elif defined(__FreeBSD__) + pid_t pid = getpid(); + int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, (int)pid}; + struct kinfo_proc kip; + size_t kip_len = sizeof(kip); + if (sysctl(mib, 4, &kip, &kip_len, NULL, 0) == 0) { + vm_size_t sz_total = kip.ki_size; + segsz_t sz_resident = kip.ki_rssize; + meminfo = stringf(", MEM: %.2f MB total, %.2f MB resident", + (int)sz_total / 1024.0 / 1024.0, + (int)sz_resident * (getpagesize() / 1024.0 / 1024.0)); + stats_divider = "\n"; + } # endif struct rusage ru_buffer; @@ -564,7 +582,7 @@ int main(int argc, char **argv) } } -#if defined(YOSYS_ENABLE_COVER) && defined(__linux__) +#if defined(YOSYS_ENABLE_COVER) && (defined(__linux__) || defined(__FreeBSD__)) if (getenv("YOSYS_COVER_DIR") || getenv("YOSYS_COVER_FILE")) { string filename; |