From 5a283e5b2b523d53e3504292c386b534dc74386a Mon Sep 17 00:00:00 2001 From: Pixel Date: Fri, 7 Oct 2011 09:27:04 -0700 Subject: Preliminary work for the Task manager. Added libcoro submodule. Also refactored some pieces of code. --- includes/Local.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'includes/Local.h') diff --git a/includes/Local.h b/includes/Local.h index f3b7250..a3405ca 100644 --- a/includes/Local.h +++ b/includes/Local.h @@ -8,6 +8,7 @@ class TLSManager { public: virtual void * getTLS(); virtual void * setTLS(void * val); + void * createTLS(); }; extern TLSManager * tlsManager; @@ -32,6 +33,26 @@ class Local : public AtStart { int m_idx; static int s_size; static void ** m_globals; + + friend class TLSManager; +}; + +template +class DefaultTmpl : public AtStart { + public: + DefaultTmpl(int pri) : AtStart(pri) { } + protected: + virtual void doStart() { new T; } +}; + +template +class LocalTmpl : public Local { + public: + LocalTmpl() { } + T * getGlobal() { return reinterpret_cast(Local::getGlobal()); } + T * get() { return reinterpret_cast(Local::get()); } + void setGlobal(T * obj) { Local::setGlobal(obj); } + void set(T * obj) { Local::set(obj); } }; }; -- cgit v1.2.3