diff --git a/Kernel/RefCounted.h b/Kernel/RefCounted.h deleted file mode 100644 index 88a611cdcd..0000000000 --- a/Kernel/RefCounted.h +++ /dev/null @@ -1,48 +0,0 @@ -#pragma once - -#include "Assertions.h" -#include "VGA.h" - -#define DEBUG_REFCOUNTED - -class RefCountedBase { - -protected: - bool derefBase() const - { - return !--m_refCount; - } - mutable size_t m_refCount { 1 }; -#ifdef DEBUG_REFCOUNTED - //mutable bool m_adopted { false }; -#endif -}; - -template -class RefCounted : public RefCountedBase { -public: - size_t refCount() const { return m_refCount; } - - void ref() const - { -#ifdef DEBUG_REFCOUNTED - ASSERT(m_refCount); - //ASSERT(m_adopted); -#endif - ++m_refCount; - } - - void deref() const - { -#ifdef DEBUG_REFCOUNTED - ASSERT(m_refCount); - //ASSERT(m_adopted); -#endif - if (derefBase()) - delete static_cast(this); - } - -protected: - RefCounted() { } - ~RefCounted() { } -}; diff --git a/Kernel/RefPtr.h b/Kernel/RefPtr.h deleted file mode 100644 index 3fa3d30c49..0000000000 --- a/Kernel/RefPtr.h +++ /dev/null @@ -1,100 +0,0 @@ -#pragma once - -#include "types.h" - -#define SANITIZE_REFPTR - -template class RefPtr; -template RefPtr adoptRef(T*); - -template -class RefPtr { -public: - RefPtr() { } - RefPtr(T* ptr) : m_ptr(ptr) { refIfNotNull(m_ptr); } - - ~RefPtr() - { - derefIfNotNull(m_ptr); -#ifdef SANITIZE_REFPTR - m_ptr = (T*)(0xeeeeeeee); -#endif - } - - RefPtr(RefPtr&& other) - : m_ptr(other.leakPtr()) - { - } - - RefPtr& operator=(RefPtr&& other) - { - if (this == &other) - return *this; - m_ptr = other.leakPtr(); - return *this; - } - - template - RefPtr(RefPtr&& other) - : m_ptr(static_cast(other.leakPtr())) - { - } - - template - RefPtr& operator=(RefPtr&& other) - { - if (this == &other) - return *this; - m_ptr = static_cast(other.leakPtr()); - return *this; - } - - RefPtr(const RefPtr& other) - : m_ptr(other.m_ptr) - { - refIfNotNull(m_ptr); - } - - RefPtr& operator=(const RefPtr& other) - { - if (this == &other) - return *this; - m_ptr = other.m_ptr; - refIfNotNull(m_ptr); - return *this; - } - - T* ptr() { return m_ptr; } - const T* ptr() const { return m_ptr; } - T* operator->() { return m_ptr; } - const T* operator->() const { return m_ptr; } - T& operator*() { return *m_ptr; } - const T& operator*() const { return *m_ptr; } - operator bool() const { return m_ptr; } - - T* leakPtr() - { - T* ptr = m_ptr; - m_ptr = nullptr; - return ptr; - } - -private: - template friend class RefPtr; - friend RefPtr adoptRef(T*); - - enum AdoptTag { Adopt }; - RefPtr(AdoptTag, T* ptr) : m_ptr(ptr) { } - - inline void refIfNotNull(T* ptr) { if (ptr) ptr->ref(); } - inline void derefIfNotNull(T* ptr) { if (ptr) ptr->deref(); } - - T* m_ptr { nullptr }; -}; - -template -inline RefPtr adoptRef(T* ptr) -{ - ASSERT(ptr->refCount() == 1); - return RefPtr(RefPtr::Adopt, ptr); -} diff --git a/Kernel/_hello.cpp b/Kernel/_hello.cpp deleted file mode 100644 index 36be71125f..0000000000 --- a/Kernel/_hello.cpp +++ /dev/null @@ -1,7 +0,0 @@ -extern "C" int puts(const char*); - -extern "C" int elf_entry() -{ - puts("Home, where you are supposed to be..."); - return 0; -} diff --git a/Kernel/_test.cpp b/Kernel/_test.cpp deleted file mode 100644 index 6958b23288..0000000000 --- a/Kernel/_test.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "Userspace.cpp" - -using namespace Userspace; - -extern "C" int elf_entry() -{ - int fd = open("/Banner.txt"); - char buf[2048]; - int nread = read(fd, buf, sizeof(buf)); - buf[nread] = '\0'; - for (int i = 0; i < nread; ++i) { - putch(buf[i]); - } - return 0; -}