Import backup from 2004-06-09
This commit is contained in:
parent
fdf6b71a91
commit
b54b8191c4
43
.bochsrc
Normal file
43
.bochsrc
Normal 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
|
@ -3,7 +3,7 @@
|
|||||||
// Device object for use in devfs
|
// Device object for use in devfs
|
||||||
// Author: Josh Holtrop
|
// Author: Josh Holtrop
|
||||||
// Date: 06/03/04
|
// Date: 06/03/04
|
||||||
// Modified: 06/08/04
|
// Modified: 06/09/04
|
||||||
|
|
||||||
#include "Device.h"
|
#include "Device.h"
|
||||||
#include "DeviceFolder.h"
|
#include "DeviceFolder.h"
|
||||||
@ -13,12 +13,12 @@
|
|||||||
|
|
||||||
Device::Device()
|
Device::Device()
|
||||||
{
|
{
|
||||||
major = minor = permissions = 0;
|
major = minor = permissions = type = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Device::Device(string aname)
|
Device::Device(string aname)
|
||||||
{
|
{
|
||||||
major = minor = permissions = 0;
|
major = minor = permissions = type = 0;
|
||||||
name = aname;
|
name = aname;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,6 +46,66 @@ Device::Device(string aname, dword amajor, dword aminor, char atype, word apermi
|
|||||||
break;
|
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)
|
void Device::setLink(string alink)
|
||||||
{
|
{
|
||||||
|
@ -29,12 +29,15 @@ public:
|
|||||||
string *link;
|
string *link;
|
||||||
};
|
};
|
||||||
dword minor;
|
dword minor;
|
||||||
word permissions;
|
word permissions; //0644 or similar
|
||||||
char type;
|
char type; //'b', 'c', 'l', 'd'
|
||||||
|
|
||||||
Device();
|
Device();
|
||||||
Device(string aname);
|
Device(string aname);
|
||||||
Device(string aname, dword amajor, dword aminor, char atype, word apermissions);
|
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);
|
void setLink(string alink);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -3,38 +3,90 @@
|
|||||||
// DeviceFolder object for use in devfs
|
// DeviceFolder object for use in devfs
|
||||||
// Author: Josh Holtrop
|
// Author: Josh Holtrop
|
||||||
// Date: 06/03/04
|
// Date: 06/03/04
|
||||||
// Modified: 06/03/04
|
// Modified: 06/09/04
|
||||||
|
|
||||||
#include "DeviceFolder.h"
|
#include "DeviceFolder.h"
|
||||||
#include "Device.h"
|
#include "Device.h"
|
||||||
#include "lang/LinkedList.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()
|
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);
|
Device dev(name, 0, 0, 'd', permissions);
|
||||||
return addDevice(dev);
|
return addDevice(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Device::mklink(string name, string link)
|
int DeviceFolder::mklink(string name, string link)
|
||||||
{
|
{
|
||||||
Device dev(name, 0, 0, 'l', 0777);
|
Device dev(name, 0, 0, 'l', 0777);
|
||||||
dev.setLink(link);
|
dev.setLink(link);
|
||||||
return addDevice(dev);
|
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);
|
Device dev(name, major, minor, type, permissions);
|
||||||
return addDevice(dev);
|
return addDevice(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int DeviceFolder::size()
|
||||||
|
{
|
||||||
|
return devices.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,13 +3,14 @@
|
|||||||
// DeviceFolder object for use in devfs
|
// DeviceFolder object for use in devfs
|
||||||
// Author: Josh Holtrop
|
// Author: Josh Holtrop
|
||||||
// Date: 06/03/04
|
// Date: 06/03/04
|
||||||
// Modified: 06/03/04
|
// Modified: 06/09/04
|
||||||
|
|
||||||
#ifndef __HOS_DEVICEFOLDER__
|
#ifndef __HOS_DEVICEFOLDER__
|
||||||
#define __HOS_DEVICEFOLDER__ __HOS_DEVICEFOLDER__
|
#define __HOS_DEVICEFOLDER__ __HOS_DEVICEFOLDER__
|
||||||
|
|
||||||
#include "lang/LinkedList.h"
|
#include "lang/LinkedList.h"
|
||||||
#include "Device.h"
|
#include "Device.h"
|
||||||
|
#include "kio.h"
|
||||||
|
|
||||||
class DeviceFolder
|
class DeviceFolder
|
||||||
{
|
{
|
||||||
@ -18,9 +19,11 @@ private:
|
|||||||
int addDevice(Device name);
|
int addDevice(Device name);
|
||||||
public:
|
public:
|
||||||
DeviceFolder();
|
DeviceFolder();
|
||||||
|
int size();
|
||||||
int mkdir(string name, word permissions);
|
int mkdir(string name, word permissions);
|
||||||
int mklink(string name, string link);
|
int mklink(string name, string link);
|
||||||
int mknod(string name, dword major, dword minor, char type, word permissions);
|
int mknod(string name, dword major, dword minor, char type, word permissions);
|
||||||
|
void ls();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -15,6 +15,13 @@ DeviceFolder *dev;
|
|||||||
void devfs_init(string mountPoint)
|
void devfs_init(string mountPoint)
|
||||||
{
|
{
|
||||||
dev = new DeviceFolder();
|
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);
|
// vfs_mount("devfs", mountPoint, 0755, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
void vfs_init()
|
void vfs_init()
|
||||||
{
|
{
|
||||||
//mntList = new LinkedList<Mount>;
|
//mntList = new LinkedList<Mount>;
|
||||||
printf("%u\n", sizeof(Device));
|
|
||||||
printf("%u\n", sizeof(DeviceFolder));
|
|
||||||
devfs_init("/dev");
|
devfs_init("/dev");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// implements a LinkedList container for HOS
|
// implements a LinkedList container for HOS
|
||||||
// Author: Josh Holtrop
|
// Author: Josh Holtrop
|
||||||
// Date: 05/22/04
|
// Date: 05/22/04
|
||||||
// Modified: 06/03/04
|
// Modified: 06/09/04
|
||||||
|
|
||||||
#ifndef __HOS_LINKEDLIST__
|
#ifndef __HOS_LINKEDLIST__
|
||||||
#define __HOS_LINKEDLIST__ __HOS_LINKEDLIST__
|
#define __HOS_LINKEDLIST__ __HOS_LINKEDLIST__
|
||||||
@ -61,6 +61,10 @@ public:
|
|||||||
theNode = theNode->next;
|
theNode = theNode->next;
|
||||||
return theNode->prev->data;
|
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
|
class reverse_iterator
|
||||||
@ -90,6 +94,10 @@ public:
|
|||||||
theNode = theNode->prev;
|
theNode = theNode->prev;
|
||||||
return theNode->next->data;
|
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 */
|
/* Basic constructor */
|
||||||
@ -99,10 +107,10 @@ public:
|
|||||||
int size() { return count; }
|
int size() { return count; }
|
||||||
|
|
||||||
/* Return some iterators for traversing the list */
|
/* Return some iterators for traversing the list */
|
||||||
iterator begin() { return iterator(firstNode); }
|
iterator begin() { return iterator(firstNode->next); }
|
||||||
iterator end() { return iterator(lastNode->next); }
|
iterator end() { return iterator(lastNode->next); }
|
||||||
reverse_iterator rbegin() { return reverse_iterator(lastNode); }
|
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 */
|
/* Insert an element, its position will be index */
|
||||||
LinkedList & insert(int index, Element e);
|
LinkedList & insert(int index, Element e);
|
||||||
|
@ -62,30 +62,6 @@ char * string::data() const { return myChars; }
|
|||||||
|
|
||||||
int string::size() const { return myLength; }
|
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)
|
string & string::operator+=(const string & str)
|
||||||
{
|
{
|
||||||
char *newStr = new char[myLength + str.myLength + 1];
|
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
|
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); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// implements c++ string object for HOS
|
// implements c++ string object for HOS
|
||||||
// Author: Josh Holtrop
|
// Author: Josh Holtrop
|
||||||
// Date: 06/01/04
|
// Date: 06/01/04
|
||||||
// Modified: 06/07/04
|
// Modified: 06/09/04
|
||||||
|
|
||||||
|
|
||||||
#ifndef __HOS_STRING__
|
#ifndef __HOS_STRING__
|
||||||
@ -38,9 +38,19 @@ public:
|
|||||||
string & operator=(const string & orig);
|
string & operator=(const string & orig);
|
||||||
string & operator=(const char *cstring);
|
string & operator=(const char *cstring);
|
||||||
|
|
||||||
/* Boolean equals operators */
|
/* Boolean comparison operators */
|
||||||
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 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
|
/* Construct strings made up of combinations of other
|
||||||
* strings, c-style strings, and characters */
|
* strings, c-style strings, and characters */
|
||||||
@ -76,6 +86,21 @@ public:
|
|||||||
static inline bool operator==(char *cstring, const string & str)
|
static inline bool operator==(char *cstring, const string & str)
|
||||||
{ return str == cstring; }
|
{ 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)
|
static inline string & operator+=(const char *cstring, string & str)
|
||||||
|
@ -139,98 +139,181 @@ Linker script and memory map
|
|||||||
0x00000000c0109104 __Z5rtrimPc
|
0x00000000c0109104 __Z5rtrimPc
|
||||||
0x00000000c0109184 __Z5lcasePc
|
0x00000000c0109184 __Z5lcasePc
|
||||||
*fill* 0x00000000c01091c1 0x3 00
|
*fill* 0x00000000c01091c1 0x3 00
|
||||||
.text 0x00000000c01091c4 0xc7d string.o
|
.text 0x00000000c01091c4 0xed9 string.o
|
||||||
0x00000000c01099ac __ZN6stringC1ERKS_S1_
|
0x00000000c01098d2 __ZN6stringC1ERKS_S1_
|
||||||
0x00000000c0109780 __ZN6stringmIEPKc
|
0x00000000c01096a6 __ZN6stringmIEPKc
|
||||||
0x00000000c0109354 __ZN6stringC1EPKc
|
0x00000000c0109354 __ZN6stringC1EPKc
|
||||||
0x00000000c0109d26 __ZN6stringC2EcRKS_
|
0x00000000c0109c4c __ZN6stringC2EcRKS_
|
||||||
0x00000000c0109aa6 __ZN6stringC1ERKS_PKc
|
0x00000000c01099cc __ZN6stringC1ERKS_PKc
|
||||||
0x00000000c0109264 __ZN6stringC2ERKS_
|
0x00000000c0109264 __ZN6stringC2ERKS_
|
||||||
0x00000000c01093a8 __ZN6stringaSERKS_
|
0x00000000c01093a8 __ZN6stringaSERKS_
|
||||||
0x00000000c0109300 __ZN6stringC2EPKc
|
0x00000000c0109300 __ZN6stringC2EPKc
|
||||||
|
0x00000000c010a012 __ZNK6stringleEPKc
|
||||||
|
0x00000000c0109fce __ZNK6stringleERKS_
|
||||||
0x00000000c01091c4 __ZN6stringC2Ev
|
0x00000000c01091c4 __ZN6stringC2Ev
|
||||||
0x00000000c0109622 __ZN6stringpLEPKc
|
0x00000000c0109548 __ZN6stringpLEPKc
|
||||||
0x00000000c0109936 __ZN6stringC2ERKS_S1_
|
0x00000000c010985c __ZN6stringC2ERKS_S1_
|
||||||
0x00000000c0109e14 __ZN6stringixEj
|
0x00000000c0109d3a __ZN6stringixEj
|
||||||
0x00000000c0109c3e __ZN6stringC2ERKS_c
|
0x00000000c0109b64 __ZN6stringC2ERKS_c
|
||||||
0x00000000c0109490 __ZNK6string4dataEv
|
0x00000000c0109490 __ZNK6string4dataEv
|
||||||
0x00000000c0109cb2 __ZN6stringC1ERKS_c
|
0x00000000c0109bd8 __ZN6stringC1ERKS_c
|
||||||
0x00000000c0109d86 __ZN6stringC1EcRKS_
|
0x00000000c0109cac __ZN6stringC1EcRKS_
|
||||||
0x00000000c0109de6 __ZNK6stringixEj
|
0x00000000c0109f76 __ZNK6stringgtEPKc
|
||||||
|
0x00000000c0109d0c __ZNK6stringixEj
|
||||||
0x00000000c0109244 __ZN6stringD1Ev
|
0x00000000c0109244 __ZN6stringD1Ev
|
||||||
0x00000000c0109b2a __ZN6stringC2EPKcRKS_
|
0x00000000c0109ed2 __ZNK6stringgtERKS_
|
||||||
0x00000000c01096de __ZN6stringmIERKS_
|
0x00000000c0109a50 __ZN6stringC2EPKcRKS_
|
||||||
0x00000000c010950e __ZNK6stringeqEPKc
|
0x00000000c0109604 __ZN6stringmIERKS_
|
||||||
|
0x00000000c0109dd0 __ZNK6stringeqEPKc
|
||||||
0x00000000c0109224 __ZN6stringD2Ev
|
0x00000000c0109224 __ZN6stringD2Ev
|
||||||
|
0x00000000c0109e42 __ZNK6stringneERKS_
|
||||||
0x00000000c010949a __ZNK6string4sizeEv
|
0x00000000c010949a __ZNK6string4sizeEv
|
||||||
0x00000000c0109a22 __ZN6stringC2ERKS_PKc
|
0x00000000c010a058 __ZNK6stringgeEPKc
|
||||||
0x00000000c01098c6 __ZN6stringmIEc
|
0x00000000c0109948 __ZN6stringC2ERKS_PKc
|
||||||
|
0x00000000c0109ff0 __ZNK6stringgeERKS_
|
||||||
|
0x00000000c01097ec __ZN6stringmIEc
|
||||||
0x00000000c01092b2 __ZN6stringC1ERKS_
|
0x00000000c01092b2 __ZN6stringC1ERKS_
|
||||||
0x00000000c0109bb4 __ZN6stringC1EPKcRKS_
|
0x00000000c0109e86 __ZNK6stringltERKS_
|
||||||
0x00000000c01094a6 __ZNK6stringeqERKS_
|
0x00000000c0109e64 __ZNK6stringneEPKc
|
||||||
0x00000000c0109842 __ZN6stringpLEc
|
0x00000000c0109ada __ZN6stringC1EPKcRKS_
|
||||||
0x00000000c0109580 __ZN6stringpLERKS_
|
0x00000000c0109d68 __ZNK6stringeqERKS_
|
||||||
|
0x00000000c0109f1e __ZNK6stringltEPKc
|
||||||
|
0x00000000c0109768 __ZN6stringpLEc
|
||||||
|
0x00000000c01094a6 __ZN6stringpLERKS_
|
||||||
0x00000000c0109418 __ZN6stringaSEPKc
|
0x00000000c0109418 __ZN6stringaSEPKc
|
||||||
0x00000000c01091f4 __ZN6stringC1Ev
|
0x00000000c01091f4 __ZN6stringC1Ev
|
||||||
*fill* 0x00000000c0109e41 0x3 00
|
*fill* 0x00000000c010a09d 0x3 00
|
||||||
.text 0x00000000c0109e44 0xe5 cmos.o
|
.text 0x00000000c010a0a0 0xe5 cmos.o
|
||||||
0x00000000c0109e9c __Z11cmos_gethd0v
|
0x00000000c010a0f8 __Z11cmos_gethd0v
|
||||||
0x00000000c0109e44 __Z11cmos_getfd0v
|
0x00000000c010a0a0 __Z11cmos_getfd0v
|
||||||
0x00000000c0109e70 __Z11cmos_getfd1v
|
0x00000000c010a0cc __Z11cmos_getfd1v
|
||||||
0x00000000c0109ec8 __Z11cmos_gethd1v
|
0x00000000c010a124 __Z11cmos_gethd1v
|
||||||
*fill* 0x00000000c0109f29 0x3 00
|
*fill* 0x00000000c010a185 0x3 00
|
||||||
.text 0x00000000c0109f2c 0x58 hos_defines.o
|
.text 0x00000000c010a188 0x58 hos_defines.o
|
||||||
0x00000000c0109f58 __ZdlPv
|
0x00000000c010a1b4 __ZdlPv
|
||||||
0x00000000c0109f42 __Znaj
|
0x00000000c010a19e __Znaj
|
||||||
0x00000000c0109f2c __Znwj
|
0x00000000c010a188 __Znwj
|
||||||
0x00000000c0109f6e __ZdaPv
|
0x00000000c010a1ca __ZdaPv
|
||||||
.text 0x00000000c0109f84 0x5e vfs.o
|
.text 0x00000000c010a1e0 0x3a vfs.o
|
||||||
0x00000000c0109f84 __Z8vfs_initv
|
0x00000000c010a1e0 __Z8vfs_initv
|
||||||
*fill* 0x00000000c0109fe2 0x2 00
|
*fill* 0x00000000c010a21a 0x2 00
|
||||||
.text 0x00000000c0109fe4 0x2d devfs.o
|
.text 0x00000000c010a21c 0x3e devfs.o
|
||||||
0x00000000c0109fe4 __Z10devfs_init6string
|
0x00000000c010a21c __Z10devfs_init6string
|
||||||
*fill* 0x00000000c010a011 0x3 00
|
*fill* 0x00000000c010a25a 0x2 00
|
||||||
.text 0x00000000c010a014 0x1e5 Device.o
|
.text 0x00000000c010a25c 0x5d3 Device.o
|
||||||
0x00000000c010a07c __ZN6DeviceC2E6stringjjct
|
0x00000000c010a648 __ZN6DeviceD2Ev
|
||||||
0x00000000c010a048 __ZN6DeviceC1Ev
|
0x00000000c010a6b4 __ZN6DeviceD1Ev
|
||||||
0x00000000c010a014 __ZN6DeviceC2Ev
|
0x00000000c010a2d8 __ZN6DeviceC2E6string
|
||||||
0x00000000c010a1c0 __ZN6Device7setLinkE6string
|
0x00000000c010a720 __ZN6DeviceaSERKS_
|
||||||
0x00000000c010a11e __ZN6DeviceC1E6stringjjct
|
0x00000000c010a4bc __ZN6DeviceC2ERKS_
|
||||||
*fill* 0x00000000c010a1f9 0x3 00
|
0x00000000c010a582 __ZN6DeviceC1ERKS_
|
||||||
.text 0x00000000c010a1fc 0x2c DeviceFolder.o
|
0x00000000c010a378 __ZN6DeviceC2E6stringjjct
|
||||||
0x00000000c010a1fc __ZN12DeviceFolderC2Ev
|
0x00000000c010a29a __ZN6DeviceC1Ev
|
||||||
0x00000000c010a212 __ZN12DeviceFolderC1Ev
|
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)
|
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
|
.gnu.linkonce.t._ZN10LinkedListI6DeviceEC1Ev
|
||||||
0x00000000c010b000 0x43
|
0x00000000c010b08c 0x43
|
||||||
.gnu.linkonce.t._ZN10LinkedListI6DeviceEC1Ev
|
.gnu.linkonce.t._ZN10LinkedListI6DeviceEC1Ev
|
||||||
0x00000000c010b000 0x43 DeviceFolder.o
|
0x00000000c010b08c 0x43 DeviceFolder.o
|
||||||
0x00000000c010b000 __ZN10LinkedListI6DeviceEC1Ev
|
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
|
.gnu.linkonce.t._ZN10LinkedListI6DeviceE10LinkedNodeC1Ev
|
||||||
0x00000000c010b044 0x2a
|
0x00000000c010b1ec 0x2a
|
||||||
.gnu.linkonce.t._ZN10LinkedListI6DeviceE10LinkedNodeC1Ev
|
.gnu.linkonce.t._ZN10LinkedListI6DeviceE10LinkedNodeC1Ev
|
||||||
0x00000000c010b044 0x2a DeviceFolder.o
|
0x00000000c010b1ec 0x2a DeviceFolder.o
|
||||||
0x00000000c010b044 __ZN10LinkedListI6DeviceE10LinkedNodeC1Ev
|
0x00000000c010b1ec __ZN10LinkedListI6DeviceE10LinkedNodeC1Ev
|
||||||
|
|
||||||
.data 0x00000000c010b070 0xf90
|
.gnu.linkonce.t._ZN10LinkedListI6DeviceE9push_backES0_
|
||||||
0x00000000c010b070 data = .
|
0x00000000c010b216 0x82
|
||||||
0x00000000c010b070 _data = .
|
.gnu.linkonce.t._ZN10LinkedListI6DeviceE9push_backES0_
|
||||||
0x00000000c010b070 __data = .
|
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)
|
||||||
.data 0x00000000c010b070 0x18 stdfont.o
|
.data 0x00000000c010b2d8 0x18 stdfont.o
|
||||||
0x00000000c010b070 _fonts
|
0x00000000c010b2d8 _fonts
|
||||||
.data 0x00000000c010b088 0x10 video.o
|
.data 0x00000000c010b2f0 0x10 video.o
|
||||||
0x00000000c010b088 _vid_ptr16
|
0x00000000c010b2f0 _vid_ptr16
|
||||||
0x00000000c010b094 _video_psetp
|
0x00000000c010b2fc _video_psetp
|
||||||
0x00000000c010b090 _vid_ptr32
|
0x00000000c010b2f8 _vid_ptr32
|
||||||
0x00000000c010b08c _vid_ptr24
|
0x00000000c010b2f4 _vid_ptr24
|
||||||
.data 0x00000000c010b098 0x4 vmm.o
|
.data 0x00000000c010b300 0x4 vmm.o
|
||||||
0x00000000c010b098 _firstHeapEntry
|
0x00000000c010b300 _firstHeapEntry
|
||||||
0x00000000c010c000 . = ALIGN (0x1000)
|
0x00000000c010c000 . = ALIGN (0x1000)
|
||||||
*fill* 0x00000000c010b09c 0x80b989800000f64 00
|
*fill* 0x00000000c010b304 0x812a37000000cfc 00
|
||||||
|
|
||||||
.rodata 0x00000000c010c000 0x2000
|
.rodata 0x00000000c010c000 0x2000
|
||||||
0x00000000c010c000 rodata = .
|
0x00000000c010c000 rodata = .
|
||||||
@ -244,9 +327,10 @@ Linker script and memory map
|
|||||||
.rodata 0x00000000c010c284 0x1e4 kio.o
|
.rodata 0x00000000c010c284 0x1e4 kio.o
|
||||||
*fill* 0x00000000c010c468 0x18 00
|
*fill* 0x00000000c010c468 0x18 00
|
||||||
.rodata 0x00000000c010c480 0x1200 stdfont.o
|
.rodata 0x00000000c010c480 0x1200 stdfont.o
|
||||||
.rodata 0x00000000c010d680 0x9 vfs.o
|
.rodata 0x00000000c010d680 0x5 vfs.o
|
||||||
|
.rodata 0x00000000c010d685 0x2d DeviceFolder.o
|
||||||
0x00000000c010e000 . = ALIGN (0x1000)
|
0x00000000c010e000 . = ALIGN (0x1000)
|
||||||
*fill* 0x00000000c010d689 0x80b98ec00000977 00
|
*fill* 0x00000000c010d6b2 0x812a3d40000094e 00
|
||||||
|
|
||||||
.bss 0x00000000c010e000 0x22000
|
.bss 0x00000000c010e000 0x22000
|
||||||
0x00000000c010e000 bss = .
|
0x00000000c010e000 bss = .
|
||||||
@ -288,7 +372,7 @@ Linker script and memory map
|
|||||||
.bss 0x00000000c012f264 0x4 devfs.o
|
.bss 0x00000000c012f264 0x4 devfs.o
|
||||||
0x00000000c012f264 _dev
|
0x00000000c012f264 _dev
|
||||||
0x00000000c0130000 . = ALIGN (0x1000)
|
0x00000000c0130000 . = ALIGN (0x1000)
|
||||||
*fill* 0x00000000c012f268 0x80b9a5000000d98 00
|
*fill* 0x00000000c012f268 0x812a53800000d98 00
|
||||||
0x00000000c0130000 end = .
|
0x00000000c0130000 end = .
|
||||||
0x00000000c0130000 _end = .
|
0x00000000c0130000 _end = .
|
||||||
0x00000000c0130000 __end = .
|
0x00000000c0130000 __end = .
|
||||||
|
Loading…
x
Reference in New Issue
Block a user