Import backup from 2004-06-09

This commit is contained in:
Josh Holtrop 2004-06-09 22:00:00 -04:00
parent fdf6b71a91
commit b54b8191c4
11 changed files with 469 additions and 117 deletions

43
.bochsrc Normal file
View File

@ -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

View File

@ -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)
{

View File

@ -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);
};

View File

@ -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<Device>::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<Device>::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();
}

View File

@ -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

View File

@ -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);
}

View File

@ -19,8 +19,8 @@
void vfs_init()
{
//mntList = new LinkedList<Mount>;
printf("%u\n", sizeof(Device));
printf("%u\n", sizeof(DeviceFolder));
devfs_init("/dev");
}

View File

@ -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);

View File

@ -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); }

View File

@ -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)

View File

@ -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 = .