diff options
author | Alexis211 <alexis211@gmail.com> | 2009-10-18 21:56:26 +0200 |
---|---|---|
committer | Alexis211 <alexis211@gmail.com> | 2009-10-18 21:56:26 +0200 |
commit | 0cca2d68451849b5ea96a3620566fd0b42dde3c0 (patch) | |
tree | fcdcaace870a59d0b8f2ccc6abb8418763960dbe /Source/Library/Userland | |
parent | 776753bfa0c411f4b1a5680409104904961fcbeb (diff) | |
download | Melon-0cca2d68451849b5ea96a3620566fd0b42dde3c0.tar.gz Melon-0cca2d68451849b5ea96a3620566fd0b42dde3c0.zip |
More work on syscalls
Diffstat (limited to 'Source/Library/Userland')
-rw-r--r-- | Source/Library/Userland/Binding/VirtualTerminal.class.h | 11 | ||||
-rw-r--r-- | Source/Library/Userland/Start.cpp | 3 | ||||
-rw-r--r-- | Source/Library/Userland/Syscall/RessourceCaller.class.h | 11 | ||||
-rw-r--r-- | Source/Library/Userland/common.h | 1 |
4 files changed, 25 insertions, 1 deletions
diff --git a/Source/Library/Userland/Binding/VirtualTerminal.class.h b/Source/Library/Userland/Binding/VirtualTerminal.class.h index a7bb4c2..67683b8 100644 --- a/Source/Library/Userland/Binding/VirtualTerminal.class.h +++ b/Source/Library/Userland/Binding/VirtualTerminal.class.h @@ -2,6 +2,7 @@ #include <VirtualTerminal.iface.h> +#include <String.class.h> #include <WChar.class.h> class VirtualTerminal : public RessourceCaller { @@ -15,6 +16,16 @@ class VirtualTerminal : public RessourceCaller { void writeHex(u32int number) { doCall(VT_IFACE_WRITEHEX, number); } + void writeDec(s64int number) { + doCall(VT_IFACE_WRITEDEC, (number >> 32), number); + } + void write(String s) { + Serialized a = s.serialize(); + doCall(VT_IFACE_WRITE, a); + } + String readLine() { + return String::unserialize(doCall(VT_IFACE_READLINE)); + } void put(WChar c) { doCall(VT_IFACE_PUT, c); diff --git a/Source/Library/Userland/Start.cpp b/Source/Library/Userland/Start.cpp index e185189..639210f 100644 --- a/Source/Library/Userland/Start.cpp +++ b/Source/Library/Userland/Start.cpp @@ -18,7 +18,7 @@ extern "C" void start() { ((void (*)(void))*call)(); } - heap.create(0x40000000, 0x00100000, 0x00003000); //Initially create a 1M heap with 12ko index + heap.create(0x40000000, 0x00100000, 0x00004000); //Initially create a 1M heap with 16ko index u32int r = main(); //Call static destructors @@ -32,4 +32,5 @@ extern "C" void start() { namespace Mem { void* alloc (u32int sz) { return heap.alloc(sz); } void free(void* ptr) { heap.free(ptr); } + void* mkXchgSpace (u32int sz) { return alloc(sz); } } diff --git a/Source/Library/Userland/Syscall/RessourceCaller.class.h b/Source/Library/Userland/Syscall/RessourceCaller.class.h index 3ad8900..3602ef0 100644 --- a/Source/Library/Userland/Syscall/RessourceCaller.class.h +++ b/Source/Library/Userland/Syscall/RessourceCaller.class.h @@ -2,6 +2,17 @@ #define DEF_RESSOURCECALLER_CLASS_H #include <Syscall/Syscall.wtf.h> +#include <common.h> + +class Serialized { + private: + u32int m_value; + + public: + Serialized(u32int v) : m_value(v) {} + ~Serialized() { Mem::free( (void*)m_value); } + operator u32int () { return m_value; } +}; class RessourceCaller { private: diff --git a/Source/Library/Userland/common.h b/Source/Library/Userland/common.h index 3508513..6257841 100644 --- a/Source/Library/Userland/common.h +++ b/Source/Library/Userland/common.h @@ -10,6 +10,7 @@ namespace Mem { void* alloc(u32int); void free(void*); + void* mkXchgSpace(u32int sz); } //Standard implemenations of operator new/delete |