Kernel: Add basic concept of Processes

We now create Shell as a process that has its own threads
This commit is contained in:
Bananymous
2023-03-16 12:17:04 +02:00
parent c012822d49
commit 1b7625581d
11 changed files with 170 additions and 48 deletions

View File

@@ -62,12 +62,21 @@ namespace BAN
{
public:
RefPtr() = default;
RefPtr(T* pointer)
{
m_pointer = pointer;
if (m_pointer)
m_pointer->ref();
}
~RefPtr() { clear(); }
template<typename U>
static RefPtr adopt(U* pointer)
{
return RefPtr(pointer);
RefPtr ptr;
ptr.m_pointer = pointer;
return ptr;
}
template<typename... Args>
@@ -76,7 +85,7 @@ namespace BAN
T* pointer = new T(forward<Args>(args)...);
if (pointer == nullptr)
return Error::from_errno(ENOMEM);
return RefPtr(pointer);
return adopt(pointer);
}
RefPtr(const RefPtr& other) { *this = other; }
@@ -118,11 +127,6 @@ namespace BAN
m_pointer = nullptr;
}
private:
RefPtr(T* pointer)
: m_pointer(pointer)
{}
private:
T* m_pointer = nullptr;
};