Kernel: Add basic concept of Processes
We now create Shell as a process that has its own threads
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user