From b54b8191c45fcefc1592b50a4a5ac095294a653e Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 9 Jun 2004 22:00:00 -0400 Subject: [PATCH] Import backup from 2004-06-09 --- .bochsrc | 43 +++++++ kernel/fs/Device.cpp | 66 ++++++++++- kernel/fs/Device.h | 9 +- kernel/fs/DeviceFolder.cpp | 64 ++++++++++- kernel/fs/DeviceFolder.h | 5 +- kernel/fs/devfs.cpp | 7 ++ kernel/fs/vfs.cpp | 4 +- kernel/lang/LinkedList.h | 14 ++- kernel/lang/string.cpp | 115 +++++++++++++++---- kernel/lang/string.h | 29 ++++- kernel/lst/LDout.doc | 230 +++++++++++++++++++++++++------------ 11 files changed, 469 insertions(+), 117 deletions(-) create mode 100644 .bochsrc diff --git a/.bochsrc b/.bochsrc new file mode 100644 index 0000000..ed05042 --- /dev/null +++ b/.bochsrc @@ -0,0 +1,43 @@ +# configuration file generated by Bochs +config_interface: textconfig +display_library: x +megs: 32 +romimage: file=/usr/share/bochs/BIOS-bochs-latest, address=0xf0000 +vgaromimage: /usr/share/bochs/VGABIOS-lgpl-latest +boot: floppy +floppya: 1_44="/dev/fd0", status=inserted +# no floppyb +ata0: enabled=0 +ata1: enabled=0 +ata2: enabled=0 +ata3: enabled=0 +parport1: enabled=1, file="" +com1: enabled=1, dev="" +usb1: enabled=1, ioaddr=0xff80, irq=10 +# no sb16 +floppy_bootsig_check: disabled=0 +vga_update_interval: 30000 +keyboard_serial_delay: 20000 +keyboard_paste_delay: 100000 +floppy_command_delay: 50000 +ips: 500000 +text_snapshot_check: 0 +mouse: enabled=0 +private_colormap: enabled=0 +i440fxsupport: enabled=0 +clock: sync=none, time0=local +# no ne2k +newharddrivesupport: enabled=1 +# no loader +log: - +logprefix: %t%e%d +debugger_log: - +panic: action=fatal +error: action=report +info: action=report +debug: action=ignore +pass: action=fatal +keyboard_mapping: enabled=0, map= +keyboard_type: mf +user_shortcut: keys=none +# no cmosimage diff --git a/kernel/fs/Device.cpp b/kernel/fs/Device.cpp index 2cf7cc6..71fb5a3 100644 --- a/kernel/fs/Device.cpp +++ b/kernel/fs/Device.cpp @@ -3,7 +3,7 @@ // Device object for use in devfs // Author: Josh Holtrop // Date: 06/03/04 -// Modified: 06/08/04 +// Modified: 06/09/04 #include "Device.h" #include "DeviceFolder.h" @@ -13,12 +13,12 @@ Device::Device() { - major = minor = permissions = 0; + major = minor = permissions = type = 0; } Device::Device(string aname) { - major = minor = permissions = 0; + major = minor = permissions = type = 0; name = aname; } @@ -46,6 +46,66 @@ Device::Device(string aname, dword amajor, dword aminor, char atype, word apermi break; } } + +Device::Device(const Device & orig) +{ + minor = orig.minor; + permissions = orig.permissions; + type = orig.type; + switch (type) + { + case 'b': + case 'c': + default: + major = orig.major; + break; + case 'l': + link = new string(*orig.link); + break; + case 'd': + folder = new DeviceFolder(*(DeviceFolder *)orig.folder); + break; + } +} + +Device::~Device() +{ + switch (type) + { + case 'l': + delete link; + break; + case 'd': + delete (DeviceFolder *)folder; + break; + } +} + +Device & Device::operator=(const Device & orig) +{ + if (&orig != this) + { + this->~Device(); + permissions = orig.permissions; + type = orig.type; + switch (type) + { + case 'b': + case 'c': + default: + major = orig.major; + minor = orig.minor; + break; + case 'l': + link = new string(*orig.link); + break; + case 'd': + folder = new DeviceFolder(*(DeviceFolder *)orig.folder); + break; + } + } + return *this; +} void Device::setLink(string alink) { diff --git a/kernel/fs/Device.h b/kernel/fs/Device.h index d597640..a5b6dfe 100644 --- a/kernel/fs/Device.h +++ b/kernel/fs/Device.h @@ -29,12 +29,15 @@ public: string *link; }; dword minor; - word permissions; - char type; - + word permissions; //0644 or similar + char type; //'b', 'c', 'l', 'd' + Device(); Device(string aname); Device(string aname, dword amajor, dword aminor, char atype, word apermissions); + Device(const Device & orig); + ~Device(); + Device & operator=(const Device & orig); void setLink(string alink); }; diff --git a/kernel/fs/DeviceFolder.cpp b/kernel/fs/DeviceFolder.cpp index 5bb5b4d..0cf11e2 100644 --- a/kernel/fs/DeviceFolder.cpp +++ b/kernel/fs/DeviceFolder.cpp @@ -3,38 +3,90 @@ // DeviceFolder object for use in devfs // Author: Josh Holtrop // Date: 06/03/04 -// Modified: 06/03/04 +// Modified: 06/09/04 #include "DeviceFolder.h" #include "Device.h" #include "lang/LinkedList.h" +#include "kio.h" + + +void DeviceFolder::ls() +{ + LinkedList::iterator it = devices.begin(); + while (it != devices.end()) + { + printf("%c", (*it).type); + const char *bitmask = "rwxrwxrwx"; + for (dword mask = 0x100; mask; mask = mask >> 1) + { + if ((*it).permissions & mask) + printf("%c", *bitmask); + else + printf("-"); + bitmask++; + } + printf("\t"); + switch ((*it).type) + { + case 'b': + case 'c': + default: + printf("%d, %d\t%s\n", (*it).major, (*it).minor, (*it).name.data()); + break; + case 'd': + printf("\t%s/\n", (*it).name.data()); + break; + case 'l': + printf("\t%s -> %s\n", (*it).name.data(), (*it).link->data()); + break; + } + it++; + } +} DeviceFolder::DeviceFolder() { } -int Device::addDevice(Device dev) +int DeviceFolder::addDevice(Device dev) { - + int i = 0; + LinkedList::iterator it = devices.begin(); + while ((*it).name < dev.name && it != devices.end()) + { + it++; + i++; + } + if (it != devices.end()) + if ((*it).name == dev.name) + return 1; //name conflict + devices.insert(i, dev); + return 0; } -int Device::mkdir(string name, word permissions) +int DeviceFolder::mkdir(string name, word permissions) { Device dev(name, 0, 0, 'd', permissions); return addDevice(dev); } -int Device::mklink(string name, string link) +int DeviceFolder::mklink(string name, string link) { Device dev(name, 0, 0, 'l', 0777); dev.setLink(link); return addDevice(dev); } -int Device::mknod(string name, dword major, dword minor, char type, word permissions) +int DeviceFolder::mknod(string name, dword major, dword minor, char type, word permissions) { Device dev(name, major, minor, type, permissions); return addDevice(dev); } +int DeviceFolder::size() +{ + return devices.size(); +} + diff --git a/kernel/fs/DeviceFolder.h b/kernel/fs/DeviceFolder.h index 0e387c7..5bb4561 100644 --- a/kernel/fs/DeviceFolder.h +++ b/kernel/fs/DeviceFolder.h @@ -3,13 +3,14 @@ // DeviceFolder object for use in devfs // Author: Josh Holtrop // Date: 06/03/04 -// Modified: 06/03/04 +// Modified: 06/09/04 #ifndef __HOS_DEVICEFOLDER__ #define __HOS_DEVICEFOLDER__ __HOS_DEVICEFOLDER__ #include "lang/LinkedList.h" #include "Device.h" +#include "kio.h" class DeviceFolder { @@ -18,9 +19,11 @@ private: int addDevice(Device name); public: DeviceFolder(); + int size(); int mkdir(string name, word permissions); int mklink(string name, string link); int mknod(string name, dword major, dword minor, char type, word permissions); + void ls(); }; #endif diff --git a/kernel/fs/devfs.cpp b/kernel/fs/devfs.cpp index 394e5d0..94d2a15 100644 --- a/kernel/fs/devfs.cpp +++ b/kernel/fs/devfs.cpp @@ -15,6 +15,13 @@ DeviceFolder *dev; void devfs_init(string mountPoint) { dev = new DeviceFolder(); +/* dev->mkdir("test", 0644); + dev->mkdir("test1", 0755); + dev->mkdir("test1", 0644); + dev->mknod("hda1", 3, 1, 'b', 0632); + dev->mknod("psmouse", 4, 1, 'c', 0677); + dev->mklink("root", "hda1"); +*/ dev->ls(); // vfs_mount("devfs", mountPoint, 0755, 0, 0); } diff --git a/kernel/fs/vfs.cpp b/kernel/fs/vfs.cpp index c8b09fc..88fa58f 100644 --- a/kernel/fs/vfs.cpp +++ b/kernel/fs/vfs.cpp @@ -19,8 +19,8 @@ void vfs_init() { //mntList = new LinkedList; - printf("%u\n", sizeof(Device)); - printf("%u\n", sizeof(DeviceFolder)); + + devfs_init("/dev"); } diff --git a/kernel/lang/LinkedList.h b/kernel/lang/LinkedList.h index 3ac279d..4370deb 100644 --- a/kernel/lang/LinkedList.h +++ b/kernel/lang/LinkedList.h @@ -3,7 +3,7 @@ // implements a LinkedList container for HOS // Author: Josh Holtrop // Date: 05/22/04 -// Modified: 06/03/04 +// Modified: 06/09/04 #ifndef __HOS_LINKEDLIST__ #define __HOS_LINKEDLIST__ __HOS_LINKEDLIST__ @@ -61,6 +61,10 @@ public: theNode = theNode->next; return theNode->prev->data; } + bool operator==(const iterator & second) const + { return theNode == second.theNode; } + bool operator!=(const iterator & second) const + { return theNode != second.theNode; } }; class reverse_iterator @@ -90,6 +94,10 @@ public: theNode = theNode->prev; return theNode->next->data; } + bool operator==(const reverse_iterator & second) const + { return theNode == second.theNode; } + bool operator!=(const reverse_iterator & second) const + { return theNode != second.theNode; } }; /* Basic constructor */ @@ -99,10 +107,10 @@ public: int size() { return count; } /* Return some iterators for traversing the list */ - iterator begin() { return iterator(firstNode); } + iterator begin() { return iterator(firstNode->next); } iterator end() { return iterator(lastNode->next); } reverse_iterator rbegin() { return reverse_iterator(lastNode); } - reverse_iterator rend() { return reverse_iterator(firstNode->prev); } + reverse_iterator rend() { return reverse_iterator(firstNode); } /* Insert an element, its position will be index */ LinkedList & insert(int index, Element e); diff --git a/kernel/lang/string.cpp b/kernel/lang/string.cpp index 8ef0b00..e7ccfbd 100644 --- a/kernel/lang/string.cpp +++ b/kernel/lang/string.cpp @@ -62,30 +62,6 @@ char * string::data() const { return myChars; } int string::size() const { return myLength; } -bool string::operator==(const string & second) const -{ - if (myLength != second.myLength) - return false; - for (unsigned int i = 0; i < myLength; i++) - { - if (myChars[i] != second.myChars[i]) - return false; - } - return true; -} - -bool string::operator==(const char *cstring) const -{ - if (myLength != strlen(cstring)) - return false; - for (unsigned int i = 0; i < myLength; i++) - { - if (myChars[i] != cstring[i]) - return false; - } - return true; -} - string & string::operator+=(const string & str) { char *newStr = new char[myLength + str.myLength + 1]; @@ -210,3 +186,94 @@ char & string::operator[](unsigned int index) return *myChars; //if index is invalid, return a pointer to the trailing 0 } + + +bool string::operator==(const string & second) const +{ + if (myLength != second.myLength) + return false; + for (unsigned int i = 0; i < myLength; i++) + { + if (myChars[i] != second.myChars[i]) + return false; + } + return true; +} + +bool string::operator==(const char *cstring) const +{ + if (myLength != strlen(cstring)) + return false; + for (unsigned int i = 0; i < myLength; i++) + { + if (myChars[i] != cstring[i]) + return false; + } + return true; +} + +bool string::operator!=(const string & second) const +{ return !operator==(second); } + +bool string::operator!=(const char *cstring) const +{ return !operator==(cstring); } + +bool string::operator<(const string & second) const +{ + char *c1 = myChars, *c2 = second.myChars; + while (*c1 == *c2 && *c1) + { + c1++; + c2++; + } + return *c1 < *c2; +} + +bool string::operator>(const string & second) const +{ + char *c1 = myChars, *c2 = second.myChars; + while (*c1 == *c2 && *c1) + { + c1++; + c2++; + } + return *c1 > *c2; +} + +bool string::operator<(const char *cstring) const +{ + char *c1 = myChars; + while (*c1 == *cstring && *c1) + { + c1++; + cstring++; + } + return *c1 < *cstring; +} + +bool string::operator>(const char *cstring) const +{ + char *c1 = myChars; + while (*c1 == *cstring && *c1) + { + c1++; + cstring++; + } + return *c1 > *cstring; +} + +bool string::operator<=(const string & second) const +{ return !operator>(second); } + +bool string::operator>=(const string & second) const +{ return !operator<(second); } + +bool string::operator<=(const char *cstring) const +{ return operator<(cstring) || operator==(cstring); } + +bool string::operator>=(const char *cstring) const +{ return operator>(cstring) || operator==(cstring); } + + + + diff --git a/kernel/lang/string.h b/kernel/lang/string.h index de6f6f5..431d128 100644 --- a/kernel/lang/string.h +++ b/kernel/lang/string.h @@ -3,7 +3,7 @@ // implements c++ string object for HOS // Author: Josh Holtrop // Date: 06/01/04 -// Modified: 06/07/04 +// Modified: 06/09/04 #ifndef __HOS_STRING__ @@ -38,9 +38,19 @@ public: string & operator=(const string & orig); string & operator=(const char *cstring); - /* Boolean equals operators */ + /* Boolean comparison operators */ bool operator==(const string & second) const; bool operator==(const char *cstring) const; + bool operator!=(const string & second) const; + bool operator!=(const char *cstring) const; + bool operator<(const string & second) const; + bool operator>(const string & second) const; + bool operator<(const char *cstring) const; + bool operator>(const char *cstring) const; + bool operator<=(const string & second) const; + bool operator>=(const string & second) const; + bool operator<=(const char *cstring) const; + bool operator>=(const char *cstring) const; /* Construct strings made up of combinations of other * strings, c-style strings, and characters */ @@ -76,6 +86,21 @@ public: static inline bool operator==(char *cstring, const string & str) { return str == cstring; } +static inline bool operator!=(char *cstring, const string & str) +{ return str != cstring; } + +static inline bool operator<(const char *cstring, const string & str) +{ return str > cstring; } + +static inline bool operator>(const char *cstring, const string & str) +{ return str < cstring; } + +static inline bool operator<=(const char *cstring, const string & str) +{ return str >= cstring; } + +static inline bool operator>=(const char *cstring, const string & str) +{ return str <= cstring; } + static inline string & operator+=(const char *cstring, string & str) diff --git a/kernel/lst/LDout.doc b/kernel/lst/LDout.doc index ceb3406..e6f7a3f 100644 --- a/kernel/lst/LDout.doc +++ b/kernel/lst/LDout.doc @@ -139,98 +139,181 @@ Linker script and memory map 0x00000000c0109104 __Z5rtrimPc 0x00000000c0109184 __Z5lcasePc *fill* 0x00000000c01091c1 0x3 00 - .text 0x00000000c01091c4 0xc7d string.o - 0x00000000c01099ac __ZN6stringC1ERKS_S1_ - 0x00000000c0109780 __ZN6stringmIEPKc + .text 0x00000000c01091c4 0xed9 string.o + 0x00000000c01098d2 __ZN6stringC1ERKS_S1_ + 0x00000000c01096a6 __ZN6stringmIEPKc 0x00000000c0109354 __ZN6stringC1EPKc - 0x00000000c0109d26 __ZN6stringC2EcRKS_ - 0x00000000c0109aa6 __ZN6stringC1ERKS_PKc + 0x00000000c0109c4c __ZN6stringC2EcRKS_ + 0x00000000c01099cc __ZN6stringC1ERKS_PKc 0x00000000c0109264 __ZN6stringC2ERKS_ 0x00000000c01093a8 __ZN6stringaSERKS_ 0x00000000c0109300 __ZN6stringC2EPKc + 0x00000000c010a012 __ZNK6stringleEPKc + 0x00000000c0109fce __ZNK6stringleERKS_ 0x00000000c01091c4 __ZN6stringC2Ev - 0x00000000c0109622 __ZN6stringpLEPKc - 0x00000000c0109936 __ZN6stringC2ERKS_S1_ - 0x00000000c0109e14 __ZN6stringixEj - 0x00000000c0109c3e __ZN6stringC2ERKS_c + 0x00000000c0109548 __ZN6stringpLEPKc + 0x00000000c010985c __ZN6stringC2ERKS_S1_ + 0x00000000c0109d3a __ZN6stringixEj + 0x00000000c0109b64 __ZN6stringC2ERKS_c 0x00000000c0109490 __ZNK6string4dataEv - 0x00000000c0109cb2 __ZN6stringC1ERKS_c - 0x00000000c0109d86 __ZN6stringC1EcRKS_ - 0x00000000c0109de6 __ZNK6stringixEj + 0x00000000c0109bd8 __ZN6stringC1ERKS_c + 0x00000000c0109cac __ZN6stringC1EcRKS_ + 0x00000000c0109f76 __ZNK6stringgtEPKc + 0x00000000c0109d0c __ZNK6stringixEj 0x00000000c0109244 __ZN6stringD1Ev - 0x00000000c0109b2a __ZN6stringC2EPKcRKS_ - 0x00000000c01096de __ZN6stringmIERKS_ - 0x00000000c010950e __ZNK6stringeqEPKc + 0x00000000c0109ed2 __ZNK6stringgtERKS_ + 0x00000000c0109a50 __ZN6stringC2EPKcRKS_ + 0x00000000c0109604 __ZN6stringmIERKS_ + 0x00000000c0109dd0 __ZNK6stringeqEPKc 0x00000000c0109224 __ZN6stringD2Ev + 0x00000000c0109e42 __ZNK6stringneERKS_ 0x00000000c010949a __ZNK6string4sizeEv - 0x00000000c0109a22 __ZN6stringC2ERKS_PKc - 0x00000000c01098c6 __ZN6stringmIEc + 0x00000000c010a058 __ZNK6stringgeEPKc + 0x00000000c0109948 __ZN6stringC2ERKS_PKc + 0x00000000c0109ff0 __ZNK6stringgeERKS_ + 0x00000000c01097ec __ZN6stringmIEc 0x00000000c01092b2 __ZN6stringC1ERKS_ - 0x00000000c0109bb4 __ZN6stringC1EPKcRKS_ - 0x00000000c01094a6 __ZNK6stringeqERKS_ - 0x00000000c0109842 __ZN6stringpLEc - 0x00000000c0109580 __ZN6stringpLERKS_ + 0x00000000c0109e86 __ZNK6stringltERKS_ + 0x00000000c0109e64 __ZNK6stringneEPKc + 0x00000000c0109ada __ZN6stringC1EPKcRKS_ + 0x00000000c0109d68 __ZNK6stringeqERKS_ + 0x00000000c0109f1e __ZNK6stringltEPKc + 0x00000000c0109768 __ZN6stringpLEc + 0x00000000c01094a6 __ZN6stringpLERKS_ 0x00000000c0109418 __ZN6stringaSEPKc 0x00000000c01091f4 __ZN6stringC1Ev - *fill* 0x00000000c0109e41 0x3 00 - .text 0x00000000c0109e44 0xe5 cmos.o - 0x00000000c0109e9c __Z11cmos_gethd0v - 0x00000000c0109e44 __Z11cmos_getfd0v - 0x00000000c0109e70 __Z11cmos_getfd1v - 0x00000000c0109ec8 __Z11cmos_gethd1v - *fill* 0x00000000c0109f29 0x3 00 - .text 0x00000000c0109f2c 0x58 hos_defines.o - 0x00000000c0109f58 __ZdlPv - 0x00000000c0109f42 __Znaj - 0x00000000c0109f2c __Znwj - 0x00000000c0109f6e __ZdaPv - .text 0x00000000c0109f84 0x5e vfs.o - 0x00000000c0109f84 __Z8vfs_initv - *fill* 0x00000000c0109fe2 0x2 00 - .text 0x00000000c0109fe4 0x2d devfs.o - 0x00000000c0109fe4 __Z10devfs_init6string - *fill* 0x00000000c010a011 0x3 00 - .text 0x00000000c010a014 0x1e5 Device.o - 0x00000000c010a07c __ZN6DeviceC2E6stringjjct - 0x00000000c010a048 __ZN6DeviceC1Ev - 0x00000000c010a014 __ZN6DeviceC2Ev - 0x00000000c010a1c0 __ZN6Device7setLinkE6string - 0x00000000c010a11e __ZN6DeviceC1E6stringjjct - *fill* 0x00000000c010a1f9 0x3 00 - .text 0x00000000c010a1fc 0x2c DeviceFolder.o - 0x00000000c010a1fc __ZN12DeviceFolderC2Ev - 0x00000000c010a212 __ZN12DeviceFolderC1Ev + *fill* 0x00000000c010a09d 0x3 00 + .text 0x00000000c010a0a0 0xe5 cmos.o + 0x00000000c010a0f8 __Z11cmos_gethd0v + 0x00000000c010a0a0 __Z11cmos_getfd0v + 0x00000000c010a0cc __Z11cmos_getfd1v + 0x00000000c010a124 __Z11cmos_gethd1v + *fill* 0x00000000c010a185 0x3 00 + .text 0x00000000c010a188 0x58 hos_defines.o + 0x00000000c010a1b4 __ZdlPv + 0x00000000c010a19e __Znaj + 0x00000000c010a188 __Znwj + 0x00000000c010a1ca __ZdaPv + .text 0x00000000c010a1e0 0x3a vfs.o + 0x00000000c010a1e0 __Z8vfs_initv + *fill* 0x00000000c010a21a 0x2 00 + .text 0x00000000c010a21c 0x3e devfs.o + 0x00000000c010a21c __Z10devfs_init6string + *fill* 0x00000000c010a25a 0x2 00 + .text 0x00000000c010a25c 0x5d3 Device.o + 0x00000000c010a648 __ZN6DeviceD2Ev + 0x00000000c010a6b4 __ZN6DeviceD1Ev + 0x00000000c010a2d8 __ZN6DeviceC2E6string + 0x00000000c010a720 __ZN6DeviceaSERKS_ + 0x00000000c010a4bc __ZN6DeviceC2ERKS_ + 0x00000000c010a582 __ZN6DeviceC1ERKS_ + 0x00000000c010a378 __ZN6DeviceC2E6stringjjct + 0x00000000c010a29a __ZN6DeviceC1Ev + 0x00000000c010a25c __ZN6DeviceC2Ev + 0x00000000c010a328 __ZN6DeviceC1E6string + 0x00000000c010a7f6 __ZN6Device7setLinkE6string + 0x00000000c010a41a __ZN6DeviceC1E6stringjjct + *fill* 0x00000000c010a82f 0x1 00 + .text 0x00000000c010a830 0x530 DeviceFolder.o + 0x00000000c010abe6 __ZN12DeviceFolder6mklinkE6stringS0_ + 0x00000000c010ad4a __ZN12DeviceFolder4sizeEv + 0x00000000c010aa12 __ZN12DeviceFolderC2Ev + 0x00000000c010aa28 __ZN12DeviceFolderC1Ev + 0x00000000c010aca6 __ZN12DeviceFolder5mknodE6stringjjct + 0x00000000c010aa3e __ZN12DeviceFolder9addDeviceE6Device + 0x00000000c010a830 __ZN12DeviceFolder2lsEv + 0x00000000c010ab4c __ZN12DeviceFolder5mkdirE6stringt 0x00000000c010b000 . = ALIGN (0x1000) - *fill* 0x00000000c010a228 0x80b237400000dd8 00 + *fill* 0x00000000c010ad60 0x80b2374000002a0 00 + +.gnu.linkonce.t._ZN10LinkedListI6DeviceE5beginEv + 0x00000000c010b000 0x27 + .gnu.linkonce.t._ZN10LinkedListI6DeviceE5beginEv + 0x00000000c010b000 0x27 DeviceFolder.o + 0x00000000c010b000 __ZN10LinkedListI6DeviceE5beginEv + +.gnu.linkonce.t._ZN10LinkedListI6DeviceE3endEv + 0x00000000c010b028 0x28 + .gnu.linkonce.t._ZN10LinkedListI6DeviceE3endEv + 0x00000000c010b028 0x28 DeviceFolder.o + 0x00000000c010b028 __ZN10LinkedListI6DeviceE3endEv + +.gnu.linkonce.t._ZNK10LinkedListI6DeviceE8iteratorneERKS2_ + 0x00000000c010b050 0x17 + .gnu.linkonce.t._ZNK10LinkedListI6DeviceE8iteratorneERKS2_ + 0x00000000c010b050 0x17 DeviceFolder.o + 0x00000000c010b050 __ZNK10LinkedListI6DeviceE8iteratorneERKS2_ + +.gnu.linkonce.t._ZN10LinkedListI6DeviceE8iteratordeEv + 0x00000000c010b068 0xa + .gnu.linkonce.t._ZN10LinkedListI6DeviceE8iteratordeEv + 0x00000000c010b068 0xa DeviceFolder.o + 0x00000000c010b068 __ZN10LinkedListI6DeviceE8iteratordeEv + +.gnu.linkonce.t._ZN10LinkedListI6DeviceE8iteratorppEi + 0x00000000c010b072 0x1a + .gnu.linkonce.t._ZN10LinkedListI6DeviceE8iteratorppEi + 0x00000000c010b072 0x1a DeviceFolder.o + 0x00000000c010b072 __ZN10LinkedListI6DeviceE8iteratorppEi .gnu.linkonce.t._ZN10LinkedListI6DeviceEC1Ev - 0x00000000c010b000 0x43 + 0x00000000c010b08c 0x43 .gnu.linkonce.t._ZN10LinkedListI6DeviceEC1Ev - 0x00000000c010b000 0x43 DeviceFolder.o - 0x00000000c010b000 __ZN10LinkedListI6DeviceEC1Ev + 0x00000000c010b08c 0x43 DeviceFolder.o + 0x00000000c010b08c __ZN10LinkedListI6DeviceEC1Ev + +.gnu.linkonce.t._ZN10LinkedListI6DeviceE6insertEiS0_ + 0x00000000c010b0d0 0x101 + .gnu.linkonce.t._ZN10LinkedListI6DeviceE6insertEiS0_ + 0x00000000c010b0d0 0x101 DeviceFolder.o + 0x00000000c010b0d0 __ZN10LinkedListI6DeviceE6insertEiS0_ + +.gnu.linkonce.t._ZN10LinkedListI6DeviceE4sizeEv + 0x00000000c010b1d2 0xb + .gnu.linkonce.t._ZN10LinkedListI6DeviceE4sizeEv + 0x00000000c010b1d2 0xb DeviceFolder.o + 0x00000000c010b1d2 __ZN10LinkedListI6DeviceE4sizeEv + +.gnu.linkonce.t._ZN10LinkedListI6DeviceE8iteratorC1EPNS1_10LinkedNodeE + 0x00000000c010b1de 0xd + .gnu.linkonce.t._ZN10LinkedListI6DeviceE8iteratorC1EPNS1_10LinkedNodeE + 0x00000000c010b1de 0xd DeviceFolder.o + 0x00000000c010b1de __ZN10LinkedListI6DeviceE8iteratorC1EPNS1_10LinkedNodeE .gnu.linkonce.t._ZN10LinkedListI6DeviceE10LinkedNodeC1Ev - 0x00000000c010b044 0x2a + 0x00000000c010b1ec 0x2a .gnu.linkonce.t._ZN10LinkedListI6DeviceE10LinkedNodeC1Ev - 0x00000000c010b044 0x2a DeviceFolder.o - 0x00000000c010b044 __ZN10LinkedListI6DeviceE10LinkedNodeC1Ev + 0x00000000c010b1ec 0x2a DeviceFolder.o + 0x00000000c010b1ec __ZN10LinkedListI6DeviceE10LinkedNodeC1Ev -.data 0x00000000c010b070 0xf90 - 0x00000000c010b070 data = . - 0x00000000c010b070 _data = . - 0x00000000c010b070 __data = . +.gnu.linkonce.t._ZN10LinkedListI6DeviceE9push_backES0_ + 0x00000000c010b216 0x82 + .gnu.linkonce.t._ZN10LinkedListI6DeviceE9push_backES0_ + 0x00000000c010b216 0x82 DeviceFolder.o + 0x00000000c010b216 __ZN10LinkedListI6DeviceE9push_backES0_ + +.gnu.linkonce.t._ZN10LinkedListI6DeviceE10LinkedNodeC1ES0_ + 0x00000000c010b298 0x40 + .gnu.linkonce.t._ZN10LinkedListI6DeviceE10LinkedNodeC1ES0_ + 0x00000000c010b298 0x40 DeviceFolder.o + 0x00000000c010b298 __ZN10LinkedListI6DeviceE10LinkedNodeC1ES0_ + +.data 0x00000000c010b2d8 0xd28 + 0x00000000c010b2d8 data = . + 0x00000000c010b2d8 _data = . + 0x00000000c010b2d8 __data = . *(.data) - .data 0x00000000c010b070 0x18 stdfont.o - 0x00000000c010b070 _fonts - .data 0x00000000c010b088 0x10 video.o - 0x00000000c010b088 _vid_ptr16 - 0x00000000c010b094 _video_psetp - 0x00000000c010b090 _vid_ptr32 - 0x00000000c010b08c _vid_ptr24 - .data 0x00000000c010b098 0x4 vmm.o - 0x00000000c010b098 _firstHeapEntry + .data 0x00000000c010b2d8 0x18 stdfont.o + 0x00000000c010b2d8 _fonts + .data 0x00000000c010b2f0 0x10 video.o + 0x00000000c010b2f0 _vid_ptr16 + 0x00000000c010b2fc _video_psetp + 0x00000000c010b2f8 _vid_ptr32 + 0x00000000c010b2f4 _vid_ptr24 + .data 0x00000000c010b300 0x4 vmm.o + 0x00000000c010b300 _firstHeapEntry 0x00000000c010c000 . = ALIGN (0x1000) - *fill* 0x00000000c010b09c 0x80b989800000f64 00 + *fill* 0x00000000c010b304 0x812a37000000cfc 00 .rodata 0x00000000c010c000 0x2000 0x00000000c010c000 rodata = . @@ -244,9 +327,10 @@ Linker script and memory map .rodata 0x00000000c010c284 0x1e4 kio.o *fill* 0x00000000c010c468 0x18 00 .rodata 0x00000000c010c480 0x1200 stdfont.o - .rodata 0x00000000c010d680 0x9 vfs.o + .rodata 0x00000000c010d680 0x5 vfs.o + .rodata 0x00000000c010d685 0x2d DeviceFolder.o 0x00000000c010e000 . = ALIGN (0x1000) - *fill* 0x00000000c010d689 0x80b98ec00000977 00 + *fill* 0x00000000c010d6b2 0x812a3d40000094e 00 .bss 0x00000000c010e000 0x22000 0x00000000c010e000 bss = . @@ -288,7 +372,7 @@ Linker script and memory map .bss 0x00000000c012f264 0x4 devfs.o 0x00000000c012f264 _dev 0x00000000c0130000 . = ALIGN (0x1000) - *fill* 0x00000000c012f268 0x80b9a5000000d98 00 + *fill* 0x00000000c012f268 0x812a53800000d98 00 0x00000000c0130000 end = . 0x00000000c0130000 _end = . 0x00000000c0130000 __end = .