[orbis-kernel] Debugging

This commit is contained in:
Ivan Chikish 2023-07-05 11:38:31 +03:00
parent 4029711c2d
commit ed7580b322
3 changed files with 13 additions and 7 deletions

View file

@ -122,6 +122,8 @@ struct Module final {
unsigned _total_size = 0;
void incRef() {
if (_total_size != sizeof(Module))
std::abort();
if (references.fetch_add(1, std::memory_order::relaxed) > 512) {
assert(!"too many references");
}

View file

@ -6,7 +6,7 @@
#include <utility>
namespace orbis {
template <typename T, typename... Args> T *knew(Args &&...args);
//template <typename T, typename... Args> T *knew(Args &&...args);
inline namespace utils {
void kfree(void* ptr, std::size_t size);
@ -17,6 +17,8 @@ struct RcBase {
virtual ~RcBase() = default;
void incRef() {
if (!_total_size)
std::abort();
if (references.fetch_add(1, std::memory_order::relaxed) > 512) {
assert(!"too many references");
}
@ -120,10 +122,10 @@ public:
auto operator<=>(const Ref &other) const = default;
};
template <WithRc T, typename... ArgsT>
requires(std::is_constructible_v<T, ArgsT...>)
Ref<T> kcreate(ArgsT &&...args) {
return Ref<T>(knew<T>(std::forward<ArgsT>(args)...));
}
// template <WithRc T, typename... ArgsT>
// requires(std::is_constructible_v<T, ArgsT...>)
// Ref<T> kcreate(ArgsT &&...args) {
// return Ref<T>(knew<T>(std::forward<ArgsT>(args)...));
// }
} // namespace utils
} // namespace orbis

View file

@ -15,7 +15,9 @@ KernelContext &g_context = *[]() -> KernelContext * {
return new (ptr) KernelContext;
}();
KernelContext::KernelContext() {}
KernelContext::KernelContext() {
std::printf("orbis::KernelContext initialized, addr=%p", this);
}
KernelContext::~KernelContext() {}
Process *KernelContext::createProcess(pid_t pid) {