From 6e87493b8cd156388b075ecace376126a8875283 Mon Sep 17 00:00:00 2001 From: Alexis211 Date: Tue, 13 Oct 2009 19:05:35 +0200 Subject: Process now uses a linked list for associated file descriptors. --- Source/Kernel/Melon.ke | Bin 614936 -> 612550 bytes Source/Kernel/TaskManager/Process.class.cpp | 18 ++++++------------ Source/Kernel/TaskManager/Process.class.h | 3 ++- 3 files changed, 8 insertions(+), 13 deletions(-) (limited to 'Source') diff --git a/Source/Kernel/Melon.ke b/Source/Kernel/Melon.ke index 71955a6..99e1599 100755 Binary files a/Source/Kernel/Melon.ke and b/Source/Kernel/Melon.ke differ diff --git a/Source/Kernel/TaskManager/Process.class.cpp b/Source/Kernel/TaskManager/Process.class.cpp index 2653269..6b07e7a 100644 --- a/Source/Kernel/TaskManager/Process.class.cpp +++ b/Source/Kernel/TaskManager/Process.class.cpp @@ -60,11 +60,11 @@ void Process::exit() { delete m_threads[i]; } m_threads.clear(); - for (u32int i = 0; i < m_fileDescriptors.size(); i++) { - m_fileDescriptors[i]->close(false); - delete m_fileDescriptors[i]; + for (SimpleList *iter = m_fileDescriptors; iter != 0; iter = iter->next()) { + iter->v()->close(false); + delete iter->v(); } - m_fileDescriptors.clear(); + delete m_fileDescriptors; m_state = P_FINISHED; } @@ -91,17 +91,11 @@ void Process::threadFinishes(Thread* thread, u32int retval) { } void Process::registerFileDescriptor(File* fd) { - m_fileDescriptors.push(fd); + m_fileDescriptors = m_fileDescriptors->cons(fd); } void Process::unregisterFileDescriptor(File* fd) { - for (u32int i = 0; i < m_fileDescriptors.size(); i++) { - if (m_fileDescriptors[i] == fd) { - m_fileDescriptors[i] = m_fileDescriptors.back(); - m_fileDescriptors.pop(); - break; - } - } + m_fileDescriptors = m_fileDescriptors->removeOnce(fd); } PageDirectory* Process::getPagedir() { diff --git a/Source/Kernel/TaskManager/Process.class.h b/Source/Kernel/TaskManager/Process.class.h index 65a5d8b..b975db1 100644 --- a/Source/Kernel/TaskManager/Process.class.h +++ b/Source/Kernel/TaskManager/Process.class.h @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -35,7 +36,7 @@ class Process { VirtualTerminal *m_vt; Vector m_threads; - Vector m_fileDescriptors; + SimpleList *m_fileDescriptors; public: static Process* createKernel(String cmdline, VirtualTerminal *vt); //Also creates a Thread for what's curently happening -- cgit v1.2.3