Main Page   Modules   Class Hierarchy   Data Structures   File List   Data Fields   Globals   Related Pages  

oscl_scheduler_threadcontext.h

Go to the documentation of this file.
00001 
00012 #ifndef OSCL_SCHEDULER_THREAD_CONTEXT_H_INCLUDED
00013 #define OSCL_SCHEDULER_THREAD_CONTEXT_H_INCLUDED
00014 
00015 #ifndef OSCL_AOSTATUS_H_INCLUDED
00016 #include "oscl_aostatus.h"
00017 #endif
00018 
00019 #ifndef OSCL_DOUBLE_LIST_H_INCLUDED
00020 #include "oscl_double_list.h"
00021 #endif
00022 
00023 #ifndef OSCL_MUTEX_H_INCLUDED
00024 #include "oscl_mutex.h"
00025 #endif
00026 
00030 enum TPVThreadContext
00031 {
00032     EPVThreadContext_InThread //context is in-thread
00033     , EPVThreadContext_OsclThread //some other thread that has Oscl initialized
00034     , EPVThreadContext_NonOsclThread //some thread that does not have Oscl initialized
00035     , EPVThreadContext_Undetermined
00036 };
00037 
00043 class OsclExecSchedulerCommonBase;
00044 class PVActiveBase;
00045 class OsclBrewThreadYield;
00046 class PVThreadContext
00047 {
00048     public:
00049 
00050         OSCL_IMPORT_REF PVThreadContext();
00051         OSCL_IMPORT_REF ~PVThreadContext();
00055         OSCL_IMPORT_REF bool IsSameThreadContext();
00056 
00061         OSCL_IMPORT_REF static uint32 Id();
00062 
00066         OSCL_IMPORT_REF void EnterThreadContext();
00067         OSCL_IMPORT_REF void ExitThreadContext();
00068 
00074         OSCL_IMPORT_REF static bool ThreadHasScheduler();
00075 
00076     private:
00077 
00082         static void LeaveIfWrongThread(PVThreadContext &a);
00083 
00084 
00085         bool iOpen;
00086 
00090         void PendComplete(PVActiveBase*, int32 aReason, TPVThreadContext aCallingContext);
00091 
00092 
00093         OsclExecSchedulerCommonBase *iScheduler;
00094 
00098         TOsclThreadId iThreadId;
00099 
00100         friend class PVActiveBase;
00101         friend class OsclActiveObject;
00102         friend class OsclTimerObject;
00103         friend class OsclExecScheduler;
00104         friend class OsclCoeActiveScheduler;
00105         friend class OsclExecSchedulerCommonBase;
00106         friend class OsclExecSchedulerBase;
00107         friend class OsclCoeActiveSchedulerBase;
00108 };
00109 
00110 
00111 
00112 
00113 #endif //
00114 
00115 

OSCL API
Posting Version: CORE_8.000.1.1_RC4