From 4bd69d4352eba8838a58b59e61f642665ee28313 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 25 Oct 2018 10:49:43 +0200 Subject: [PATCH] Remove old DatBuffer class. (also increase the number of sectors loaded by the bootloader in the since I just noticed we were at the limit. This is not the ideal way of doing this.) --- Kernel/Boot/boot.asm | 2 +- Kernel/DataBuffer.cpp | 75 ------------------------------------------- Kernel/DataBuffer.h | 39 ---------------------- Kernel/Disk.cpp | 19 +++++------ Kernel/Disk.h | 1 - Kernel/Makefile | 1 - 6 files changed, 9 insertions(+), 128 deletions(-) delete mode 100644 Kernel/DataBuffer.cpp delete mode 100644 Kernel/DataBuffer.h diff --git a/Kernel/Boot/boot.asm b/Kernel/Boot/boot.asm index df4d48990a8..261ae26c09d 100755 --- a/Kernel/Boot/boot.asm +++ b/Kernel/Boot/boot.asm @@ -42,7 +42,7 @@ boot: inc word [cur_lba] mov cx, word [cur_lba] - cmp cx, 400 + cmp cx, 600 jz .sector_loop_end mov bx, es diff --git a/Kernel/DataBuffer.cpp b/Kernel/DataBuffer.cpp deleted file mode 100644 index 9be5bce3309..00000000000 --- a/Kernel/DataBuffer.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include "DataBuffer.h" -#include "StdLib.h" - -#define SANITIZE_DATABUFFER - -DataBuffer::DataBuffer(size_t length) - : m_length(length) - , m_owned(true) -{ - m_data = new BYTE[m_length]; -#ifdef SANITIZE_DATABUFFER - memset(m_data, 0x1a, length); -#endif -} - -DataBuffer::DataBuffer(BYTE* data, size_t length, ConstructionMode mode) - : m_length(length) -{ - switch (mode) { - case Copy: - m_data = new BYTE[m_length]; - memcpy(m_data, data, m_length); - m_owned = true; - break; - case Adopt: - m_data = data; - m_owned = true; - break; - case Wrap: - m_data = data; - m_owned = false; - break; - } -} - -DataBuffer::~DataBuffer() -{ - clear(); -#ifdef SANITIZE_DATABUFFER - m_data = (BYTE*)0x88888888; -#endif -} - -void DataBuffer::clear() -{ - if (m_owned) { -#ifdef SANITIZE_DATABUFFER - memset(m_data, 0x99, m_length); -#endif - delete [] m_data; - } - m_owned = false; - m_data = nullptr; - m_length = 0; -} - -RefPtr DataBuffer::createUninitialized(size_t length) -{ - return adoptRef(new DataBuffer(length)); -} - -RefPtr DataBuffer::copy(const BYTE* data, size_t length) -{ - return adoptRef(new DataBuffer(const_cast(data), length, Copy)); -} - -RefPtr DataBuffer::wrap(BYTE* data, size_t length) -{ - return adoptRef(new DataBuffer(data, length, Wrap)); -} - -RefPtr DataBuffer::adopt(BYTE* data, size_t length) -{ - return adoptRef(new DataBuffer(data, length, Adopt)); -} diff --git a/Kernel/DataBuffer.h b/Kernel/DataBuffer.h deleted file mode 100644 index ae7fef83088..00000000000 --- a/Kernel/DataBuffer.h +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once - -#include "types.h" -#include "RefCounted.h" -#include "RefPtr.h" - -class DataBuffer : public RefCounted { -public: - ~DataBuffer(); - - BYTE operator[](size_t i) const { return m_data[i]; } - bool isEmpty() const { return !m_length; } - size_t length() const { return m_length; } - BYTE* data() { return m_data; } - const BYTE* data() const { return m_data; } - - static RefPtr copy(const BYTE*, size_t length); - static RefPtr wrap(BYTE*, size_t length); - static RefPtr adopt(BYTE*, size_t length); - static RefPtr createUninitialized(size_t length); - - void clear(); - void leak() { m_data = nullptr; m_length = 0; m_owned = false; } - -private: - DataBuffer() { } - DataBuffer(DataBuffer&&) = delete; - DataBuffer& operator=(DataBuffer&&) = delete; - - enum ConstructionMode { Copy, Wrap, Adopt }; - explicit DataBuffer(size_t length); - DataBuffer(BYTE*, size_t length, ConstructionMode); - DataBuffer(const DataBuffer&) = delete; - DataBuffer& operator=(const DataBuffer&) = delete; - - BYTE* m_data { nullptr }; - size_t m_length { 0 }; - bool m_owned { false }; -}; diff --git a/Kernel/Disk.cpp b/Kernel/Disk.cpp index 2346865b2ef..3c971efdbb8 100644 --- a/Kernel/Disk.cpp +++ b/Kernel/Disk.cpp @@ -6,7 +6,6 @@ #include "StdLib.h" #include "IO.h" #include "i386.h" -#include "DataBuffer.h" #include "PIC.h" //#define DISK_DEBUG @@ -88,11 +87,11 @@ void initialize() enableIRQ(); waitForInterrupt(); - RefPtr wbuf = DataBuffer::createUninitialized(512); - BYTE* byteBuffer = new BYTE[512]; - BYTE* b = byteBuffer; - WORD* wbufbase = (WORD*)wbuf->data(); - WORD* w = (WORD*)wbuf->data(); + ByteBuffer wbuf = ByteBuffer::createUninitialized(512); + ByteBuffer bbuf = ByteBuffer::createUninitialized(512); + BYTE* b = bbuf.pointer(); + WORD* w = (WORD*)wbuf.pointer(); + const WORD* wbufbase = (WORD*)wbuf.pointer(); for (DWORD i = 0; i < 256; ++i) { WORD data = IO::in16(IDE0_DATA); @@ -102,8 +101,8 @@ void initialize() } // "Unpad" the device name string. - for (DWORD i = 93; i > 54 && byteBuffer[i] == ' '; --i) - byteBuffer[i] = 0; + for (DWORD i = 93; i > 54 && bbuf[i] == ' '; --i) + bbuf[i] = 0; drive[0].cylinders = wbufbase[1]; drive[0].heads = wbufbase[3]; @@ -111,13 +110,11 @@ void initialize() kprintf( "ide0: Master=\"%s\", C/H/Spt=%u/%u/%u\n", - byteBuffer + 54, + bbuf.pointer() + 54, drive[0].cylinders, drive[0].heads, drive[0].sectors_per_track ); - - delete byteBuffer; } struct CHS { diff --git a/Kernel/Disk.h b/Kernel/Disk.h index 28126b29221..103acdc63c2 100644 --- a/Kernel/Disk.h +++ b/Kernel/Disk.h @@ -1,7 +1,6 @@ #pragma once #include "types.h" -#include "DataBuffer.h" #define IDE0_DATA 0x1F0 #define IDE0_STATUS 0x1F7 diff --git a/Kernel/Makefile b/Kernel/Makefile index 2e02b2aae88..3fc318e9dec 100644 --- a/Kernel/Makefile +++ b/Kernel/Makefile @@ -12,7 +12,6 @@ KERNEL_OBJS = \ IO.o \ PIC.o \ Syscall.o \ - DataBuffer.o \ Disk.o \ Userspace.o \ IDEDiskDevice.o \