factor/vm/os-genunix.cpp

39 lines
857 B
C++

#include "master.hpp"
#include <time.h>
namespace factor {
void factor_vm::c_to_factor_toplevel(cell quot) { c_to_factor(quot); }
void factor_vm::init_signals() { unix_init_signals(); }
void early_init() {}
#define SUFFIX ".image"
#define SUFFIX_LEN 6
// You must free() the result yourself.
const char* default_image_path() {
const char* path = vm_executable_path();
if (!path)
return strdup("factor.image");
int len = strlen(path);
char* new_path = (char *)malloc(len + SUFFIX_LEN + 1);
memcpy(new_path, path, len);
memcpy(new_path + len, SUFFIX, SUFFIX_LEN + 1);
free(const_cast<char*>(path));
return new_path;
}
uint64_t nano_count() {
struct timespec t;
int ret = clock_gettime(CLOCK_MONOTONIC, &t);
if (ret != 0)
fatal_error("clock_gettime failed", 0);
return (uint64_t)t.tv_sec * 1000000000 + t.tv_nsec;
}
}