mirror of https://github.com/YosysHQ/yosys.git
Add "#ifdef __FreeBSD__"
This commit is contained in:
parent
145c685de0
commit
e3575a86c5
|
@ -34,12 +34,17 @@
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#ifdef __linux__
|
#if defined (__linux__) || defined(__FreeBSD__)
|
||||||
# include <sys/resource.h>
|
# include <sys/resource.h>
|
||||||
# include <sys/types.h>
|
# include <sys/types.h>
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __FreeBSD__
|
||||||
|
# include <sys/sysctl.h>
|
||||||
|
# include <sys/user.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !defined(_WIN32) || defined(__MINGW32__)
|
#if !defined(_WIN32) || defined(__MINGW32__)
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
#else
|
#else
|
||||||
|
@ -510,7 +515,7 @@ int main(int argc, char **argv)
|
||||||
#else
|
#else
|
||||||
std::string meminfo;
|
std::string meminfo;
|
||||||
std::string stats_divider = ", ";
|
std::string stats_divider = ", ";
|
||||||
# ifdef __linux__
|
# if defined(__linux__)
|
||||||
std::ifstream statm;
|
std::ifstream statm;
|
||||||
statm.open(stringf("/proc/%lld/statm", (long long)getpid()));
|
statm.open(stringf("/proc/%lld/statm", (long long)getpid()));
|
||||||
if (statm.is_open()) {
|
if (statm.is_open()) {
|
||||||
|
@ -521,6 +526,19 @@ int main(int argc, char **argv)
|
||||||
sz_resident * (getpagesize() / 1024.0 / 1024.0));
|
sz_resident * (getpagesize() / 1024.0 / 1024.0));
|
||||||
stats_divider = "\n";
|
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
|
# endif
|
||||||
|
|
||||||
struct rusage ru_buffer;
|
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"))
|
if (getenv("YOSYS_COVER_DIR") || getenv("YOSYS_COVER_FILE"))
|
||||||
{
|
{
|
||||||
string filename;
|
string filename;
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
# include <sys/time.h>
|
# include <sys/time.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __linux__
|
#if defined(__linux__) || defined(__FreeBSD__)
|
||||||
# include <dlfcn.h>
|
# include <dlfcn.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -392,7 +392,7 @@ void log_pop()
|
||||||
log_flush();
|
log_flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__linux__) && defined(YOSYS_ENABLE_PLUGINS)
|
#if (defined(__linux__) || defined(__FreeBSD__)) && defined(YOSYS_ENABLE_PLUGINS)
|
||||||
void log_backtrace(const char *prefix, int levels)
|
void log_backtrace(const char *prefix, int levels)
|
||||||
{
|
{
|
||||||
if (levels <= 0) return;
|
if (levels <= 0) return;
|
||||||
|
@ -587,7 +587,7 @@ void log_wire(RTLIL::Wire *wire, std::string indent)
|
||||||
// ---------------------------------------------------
|
// ---------------------------------------------------
|
||||||
// This is the magic behind the code coverage counters
|
// This is the magic behind the code coverage counters
|
||||||
// ---------------------------------------------------
|
// ---------------------------------------------------
|
||||||
#if defined(YOSYS_ENABLE_COVER) && defined(__linux__)
|
#if defined(YOSYS_ENABLE_COVER) && (defined(__linux__) || defined(__FreeBSD__))
|
||||||
|
|
||||||
dict<std::string, std::pair<std::string, int>> extra_coverage_data;
|
dict<std::string, std::pair<std::string, int>> extra_coverage_data;
|
||||||
|
|
||||||
|
|
|
@ -114,7 +114,7 @@ static inline void log_assert_worker(bool cond, const char *expr, const char *fi
|
||||||
// This is the magic behind the code coverage counters
|
// This is the magic behind the code coverage counters
|
||||||
// ---------------------------------------------------
|
// ---------------------------------------------------
|
||||||
|
|
||||||
#if defined(YOSYS_ENABLE_COVER) && defined(__linux__)
|
#if defined(YOSYS_ENABLE_COVER) && (defined(__linux__) || defined(__FreeBSD__))
|
||||||
|
|
||||||
#define cover(_id) do { \
|
#define cover(_id) do { \
|
||||||
static CoverData __d __attribute__((section("yosys_cover_list"), aligned(1), used)) = { __FILE__, __FUNCTION__, _id, __LINE__, 0 }; \
|
static CoverData __d __attribute__((section("yosys_cover_list"), aligned(1), used)) = { __FILE__, __FUNCTION__, _id, __LINE__, 0 }; \
|
||||||
|
|
|
@ -46,10 +46,15 @@
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
# include <dirent.h>
|
# include <dirent.h>
|
||||||
# include <sys/types.h>
|
# include <sys/types.h>
|
||||||
|
# include <sys/wait.h>
|
||||||
# include <sys/stat.h>
|
# include <sys/stat.h>
|
||||||
# include <glob.h>
|
# include <glob.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __FreeBSD__
|
||||||
|
# include <sys/sysctl.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
@ -72,7 +77,7 @@ std::vector<void*> memhasher_store;
|
||||||
|
|
||||||
void memhasher_on()
|
void memhasher_on()
|
||||||
{
|
{
|
||||||
#ifdef __linux__
|
#if defined(__linux__) || defined(__FreeBSD__)
|
||||||
memhasher_rng += time(NULL) << 16 ^ getpid();
|
memhasher_rng += time(NULL) << 16 ^ getpid();
|
||||||
#endif
|
#endif
|
||||||
memhasher_store.resize(0x10000);
|
memhasher_store.resize(0x10000);
|
||||||
|
@ -667,6 +672,26 @@ std::string proc_self_dirname()
|
||||||
buflen--;
|
buflen--;
|
||||||
return std::string(path, buflen);
|
return std::string(path, buflen);
|
||||||
}
|
}
|
||||||
|
#elif defined(__FreeBSD__)
|
||||||
|
std::string proc_self_dirname()
|
||||||
|
{
|
||||||
|
int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1};
|
||||||
|
size_t buflen;
|
||||||
|
char *buffer;
|
||||||
|
std::string path;
|
||||||
|
if (sysctl(mib, 4, NULL, &buflen, NULL, 0) != 0)
|
||||||
|
log_error("sysctl failed: %s\n", strerror(errno));
|
||||||
|
buffer = (char*)malloc(buflen);
|
||||||
|
if (buffer == NULL)
|
||||||
|
log_error("malloc failed: %s\n", strerror(errno));
|
||||||
|
if (sysctl(mib, 4, buffer, &buflen, NULL, 0) != 0)
|
||||||
|
log_error("sysctl failed: %s\n", strerror(errno));
|
||||||
|
while (buflen > 0 && buffer[buflen-1] != '/')
|
||||||
|
buflen--;
|
||||||
|
path.assign(buffer, buflen);
|
||||||
|
free(buffer);
|
||||||
|
return path;
|
||||||
|
}
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
std::string proc_self_dirname()
|
std::string proc_self_dirname()
|
||||||
{
|
{
|
||||||
|
|
|
@ -128,7 +128,7 @@ struct CoverPass : public Pass {
|
||||||
log("\n");
|
log("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(YOSYS_ENABLE_COVER) && defined(__linux__)
|
#if defined(YOSYS_ENABLE_COVER) && (defined(__linux__) || defined(__FreeBSD__))
|
||||||
for (auto &it : get_coverage_data()) {
|
for (auto &it : get_coverage_data()) {
|
||||||
if (!patterns.empty()) {
|
if (!patterns.empty()) {
|
||||||
for (auto &p : patterns)
|
for (auto &p : patterns)
|
||||||
|
|
Loading…
Reference in New Issue