add sync probes in bada_sync.cpp
[platform/core/system/swap-probe.git] / probe_badaapi / bada_thread.cpp
index 2e2dcc7..c0487c7 100755 (executable)
 #include "probeinfo.h"
 #include "dahelper.h"
 
+#include "binproto.h"
+
+static enum DaOptions _sopt = OPT_THREAD;
+
 extern __thread unsigned int gProbeDepth;
 
 namespace Tizen {
@@ -143,12 +147,12 @@ private:
 //                     exit(0);
 //             }
 //
-//             memcpy(&GetThreadp, &tmpPtr, sizeof(&tmpPtr));
+//             memcpy(&GetThreadp, &tmpPtr, sizeof(tmpPtr));
 //
 //             probeBlockEnd();
 //     }
 //
-//     if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+//     if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
 //             setProbePoint(&probeInfo);
 //             preBlockEnd();
 //     }
@@ -222,24 +226,26 @@ _ThreadImpl::ThreadProc(void* params) {
 
        if (!ThreadProcp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
-               tmpPtr = dlsym(lib_handle, "_ZN5Tizen4Base7Runtime11_ThreadImpl10ThreadProcEPv");
+               tmpPtr = dlsym(lib_handle[LIBOSP_APPFW], "_ZN5Tizen4Base7Runtime11_ThreadImpl10ThreadProcEPv");
 
                if (tmpPtr == NULL || dlerror() != NULL) {
                        perror("dlsym failed : Tizen::Base::Runtime::_ThreadImpl::ThreadProc");
                        exit(0);
                }
 
-               memcpy(&ThreadProcp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&ThreadProcp, &tmpPtr, sizeof(tmpPtr));
 
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                log.type = 0;
                log.length = 0;
@@ -249,7 +255,7 @@ _ThreadImpl::ThreadProc(void* params) {
                                probeInfo.pID, probeInfo.tID);
 
                _ThreadImpl* pSelf =(_ThreadImpl*)params;
-               const Thread* pThread;
+               const Thread* pThread = NULL;
                if(pSelf != null){
                        pThread = pSelf->GetThread();
                }
@@ -264,6 +270,13 @@ _ThreadImpl::ThreadProc(void* params) {
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "p", params);
+               PACK_COMMON_END((unsigned int)pSelf, 0, blockresult);
+               PACK_THREAD((unsigned int)pThread, THREAD_OSPTHREAD_WORKER, THREAD_API_INTERNAL_START);
+               FLUSH_LOCAL_BUF();
+
                preBlockEnd();
        }
        // all probe should be reachable inside thread start_routine (user implemented Thread::Run)
@@ -283,7 +296,7 @@ _ThreadImpl::ThreadProc(void* params) {
                                probeInfo.pID, probeInfo.tID);
 
                _ThreadImpl* pSelf =(_ThreadImpl*)params;
-               const Thread* pThread;
+               const Thread* pThread = NULL;
                if(pSelf != null){
                        pThread = pSelf->GetThread();
                }
@@ -298,6 +311,13 @@ _ThreadImpl::ThreadProc(void* params) {
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "p", params);
+               PACK_COMMON_END((unsigned int)pSelf, 0, blockresult);
+               PACK_THREAD((unsigned int)pThread, THREAD_OSPTHREAD_WORKER, THREAD_API_INTERNAL_STOP);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return null;
@@ -326,12 +346,12 @@ _ThreadImpl::ThreadProc(void* params) {
 //                     exit(0);
 //             }
 //
-//             memcpy(&Stopp, &tmpPtr, sizeof(&tmpPtr));
+//             memcpy(&Stopp, &tmpPtr, sizeof(tmpPtr));
 //
 //             probeBlockEnd();
 //     }
 //
-//     if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+//     if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
 //             setProbePoint(&probeInfo);
 //             preBlockEnd();
 //     }
@@ -386,11 +406,11 @@ _ThreadImpl::ThreadProc(void* params) {
 //                     exit(0);
 //             }
 //
-//             memcpy(&Finalizep, &tmpPtr, sizeof(&tmpPtr));
+//             memcpy(&Finalizep, &tmpPtr, sizeof(tmpPtr));
 //             probeBlockEnd();
 //     }
 //
-//     if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+//     if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
 //             setProbePoint(&probeInfo);
 //             preBlockEnd();
 //     }
@@ -444,11 +464,11 @@ _ThreadImpl::ThreadProc(void* params) {
 //                     return;
 //             }
 //
-//             memcpy(&Threadp, &tmpPtr, sizeof(&tmpPtr));
+//             memcpy(&Threadp, &tmpPtr, sizeof(tmpPtr));
 //             probeBlockEnd();
 //     }
 //
-//     if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+//     if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
 //             setProbePoint(&probeInfo);
 //             preBlockEnd();
 //     }
@@ -503,11 +523,11 @@ _ThreadImpl::ThreadProc(void* params) {
 //                     exit(0);
 //             }
 //
-//             memcpy(&ThreadDp, &tmpPtr, sizeof(&tmpPtr));
+//             memcpy(&ThreadDp, &tmpPtr, sizeof(tmpPtr));
 //             probeBlockEnd();
 //     }
 //
-//     if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+//     if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
 //             setProbePoint(&probeInfo);
 //             preBlockEnd();
 //     }
@@ -549,24 +569,26 @@ result Thread::Sleep(long milliSeconds) {
 
        if (!Sleepp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
-               tmpPtr = dlsym(lib_handle, "_ZN5Tizen4Base7Runtime6Thread5SleepEl");
+               tmpPtr = dlsym(lib_handle[LIBOSP_APPFW], "_ZN5Tizen4Base7Runtime6Thread5SleepEl");
 
                if (tmpPtr == NULL || dlerror() != NULL) {
                        perror("dlsym failed : Tizen::Base::Runtime::Thread::Sleep");
                        exit(0);
                }
 
-               memcpy(&Sleepp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&Sleepp, &tmpPtr, sizeof(tmpPtr));
 
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                log.type = 0;
                log.length = 0;
@@ -589,6 +611,13 @@ result Thread::Sleep(long milliSeconds) {
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "x", milliSeconds);
+               PACK_COMMON_END(0, 0, blockresult);
+               PACK_THREAD((unsigned int)currentThread, THREAD_OSPTHREAD_WORKER, THREAD_API_WAIT_START);
+               FLUSH_LOCAL_BUF();
+
                preBlockEnd();
        }
        //
@@ -618,6 +647,13 @@ result Thread::Sleep(long milliSeconds) {
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "x", milliSeconds);
+               PACK_COMMON_END(ret, ret, blockresult);
+               PACK_THREAD((unsigned int)currentThread, THREAD_OSPTHREAD_WORKER, THREAD_API_WAIT_END);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return ret;
@@ -635,24 +671,26 @@ Thread* Thread::GetCurrentThread(void) {
 
        if (!GetCurrentThreadp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
-               tmpPtr = dlsym(lib_handle, "_ZN5Tizen4Base7Runtime6Thread16GetCurrentThreadEv");
+               tmpPtr = dlsym(lib_handle[LIBOSP_APPFW], "_ZN5Tizen4Base7Runtime6Thread16GetCurrentThreadEv");
 
                if (tmpPtr == NULL || dlerror() != NULL) {
                        perror("dlsym failed : Tizen::Base::Runtime::Thread::GetCurrentThread");
                        exit(0);
                }
 
-               memcpy(&GetCurrentThreadp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&GetCurrentThreadp, &tmpPtr, sizeof(tmpPtr));
 
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                preBlockEnd();
        }
@@ -680,6 +718,13 @@ Thread* Thread::GetCurrentThread(void) {
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "", 0);
+               PACK_COMMON_END((unsigned int)currentThread, res, blockresult);
+               PACK_THREAD((unsigned int)currentThread, THREAD_OSPTHREAD_WORKER, THREAD_API_OTHER);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return currentThread;
@@ -697,24 +742,26 @@ result Thread::Yield(void) {
 
        if (!Yieldp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
-               tmpPtr = dlsym(lib_handle, "_ZN5Tizen4Base7Runtime6Thread5YieldEv");
+               tmpPtr = dlsym(lib_handle[LIBOSP_APPFW], "_ZN5Tizen4Base7Runtime6Thread5YieldEv");
 
                if (tmpPtr == NULL || dlerror() != NULL) {
                        perror("dlsym failed : Tizen::Base::Runtime::Thread::Yield");
                        exit(0);
                }
 
-               memcpy(&Yieldp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&Yieldp, &tmpPtr, sizeof(tmpPtr));
 
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                preBlockEnd();
        }
@@ -744,6 +791,13 @@ result Thread::Yield(void) {
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "", 0);
+               PACK_COMMON_END(ret, ret, blockresult);
+               PACK_THREAD((unsigned int)currentThread, THREAD_OSPTHREAD_WORKER, THREAD_API_OTHER);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return ret;
@@ -761,24 +815,26 @@ result Thread::Exit(int exitCode) {
 
        if (!Exitp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
-               tmpPtr = dlsym(lib_handle, "_ZN5Tizen4Base7Runtime6Thread4ExitEi");
+               tmpPtr = dlsym(lib_handle[LIBOSP_APPFW], "_ZN5Tizen4Base7Runtime6Thread4ExitEi");
 
                if (tmpPtr == NULL || dlerror() != NULL) {
                        perror("dlsym failed : Tizen::Base::Runtime::Thread::Exit");
                        exit(0);
                }
 
-               memcpy(&Exitp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&Exitp, &tmpPtr, sizeof(tmpPtr));
 
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                log.type = 0;
                log.length = 0;
@@ -802,6 +858,13 @@ result Thread::Exit(int exitCode) {
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "d", exitCode);
+               PACK_COMMON_END(0, 0, blockresult);
+               PACK_THREAD((unsigned int)currentThread, THREAD_OSPTHREAD_WORKER, THREAD_API_EXIT);
+               FLUSH_LOCAL_BUF();
+
                preBlockEnd();
        }
        //
@@ -825,14 +888,16 @@ result Thread::Construct(ThreadType threadType, long stackSize,
 
        if (!Constructp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
                tmpPtr =
                                dlsym(
-                                               lib_handle,
+                                               lib_handle[LIBOSP_APPFW],
                                                "_ZN5Tizen4Base7Runtime6Thread9ConstructENS1_10ThreadTypeElNS1_14ThreadPriorityE");
 
                if (tmpPtr == NULL || dlerror() != NULL) {
@@ -840,11 +905,11 @@ result Thread::Construct(ThreadType threadType, long stackSize,
                        exit(0);
                }
 
-               memcpy(&Constructp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&Constructp, &tmpPtr, sizeof(tmpPtr));
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                preBlockEnd();
        }
@@ -871,6 +936,13 @@ result Thread::Construct(ThreadType threadType, long stackSize,
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "dxd", threadType, stackSize, priority);
+               PACK_COMMON_END(ret, ret, blockresult);
+               PACK_THREAD((unsigned int) this, THREAD_OSPTHREAD_WORKER, THREAD_API_NEW);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return ret;
@@ -888,23 +960,25 @@ result Thread::Construct(long stackSize, ThreadPriority priority) {
 
        if (!Constructp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
-               tmpPtr = dlsym(lib_handle,
+               tmpPtr = dlsym(lib_handle[LIBOSP_APPFW],
                                "_ZN5Tizen4Base7Runtime6Thread9ConstructElNS1_14ThreadPriorityE");
                if (tmpPtr == NULL || dlerror() != NULL) {
                        perror("dlsym failed : Tizen::Base::Runtime::Thread::Construct");
                        exit(0);
                }
 
-               memcpy(&Constructp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&Constructp, &tmpPtr, sizeof(tmpPtr));
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                preBlockEnd();
        }
@@ -931,6 +1005,13 @@ result Thread::Construct(long stackSize, ThreadPriority priority) {
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "xd", stackSize, priority);
+               PACK_COMMON_END(ret, ret, blockresult);
+               PACK_THREAD((unsigned int) this, THREAD_OSPTHREAD_WORKER, THREAD_API_NEW);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return ret;
@@ -951,14 +1032,16 @@ result Thread::Construct(const Tizen::Base::String &name, long stackSize,
 
        if (!Constructp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
                tmpPtr =
                                dlsym(
-                                               lib_handle,
+                                               lib_handle[LIBOSP_APPFW],
                                                "_ZN5Tizen4Base7Runtime6Thread9ConstructERKNS0_6StringElNS1_14ThreadPriorityE");
 
                if (tmpPtr == NULL || dlerror() != NULL) {
@@ -966,11 +1049,11 @@ result Thread::Construct(const Tizen::Base::String &name, long stackSize,
                        exit(0);
                }
 
-               memcpy(&Constructp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&Constructp, &tmpPtr, sizeof(tmpPtr));
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                preBlockEnd();
        }
@@ -998,6 +1081,13 @@ result Thread::Construct(const Tizen::Base::String &name, long stackSize,
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "sxd", temp, stackSize, priority);
+               PACK_COMMON_END(ret, ret, blockresult);
+               PACK_THREAD((unsigned int) this, THREAD_OSPTHREAD_WORKER, THREAD_API_NEW);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return ret;
@@ -1018,26 +1108,28 @@ result Thread::Construct(const Tizen::Base::String &name, ThreadType threadType,
 
        if (!Constructp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
 
                tmpPtr =
                                dlsym(
-                                               lib_handle,
+                                               lib_handle[LIBOSP_APPFW],
                                                "_ZN5Tizen4Base7Runtime6Thread9ConstructERKNS0_6StringENS1_10ThreadTypeElNS1_14ThreadPriorityE");
                if (tmpPtr == NULL || dlerror() != NULL) {
                        perror("dlsym failed : Tizen::Base::Runtime::Thread::Construct");
                        exit(0);
                }
 
-               memcpy(&Constructp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&Constructp, &tmpPtr, sizeof(tmpPtr));
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                preBlockEnd();
        }
@@ -1065,6 +1157,13 @@ result Thread::Construct(const Tizen::Base::String &name, ThreadType threadType,
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "sdxd", temp, threadType, stackSize, priority);
+               PACK_COMMON_END(ret, ret, blockresult);
+               PACK_THREAD((unsigned int) this, THREAD_OSPTHREAD_WORKER, THREAD_API_NEW);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return ret;
@@ -1084,14 +1183,16 @@ result Thread::Construct(IRunnable &target, long stackSize,
 
        if (!Constructp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
                tmpPtr =
                                dlsym(
-                                               lib_handle,
+                                               lib_handle[LIBOSP_APPFW],
                                                "_ZN5Tizen4Base7Runtime6Thread9ConstructERNS1_9IRunnableElNS1_14ThreadPriorityE");
 
                if (tmpPtr == NULL || dlerror() != NULL) {
@@ -1099,11 +1200,11 @@ result Thread::Construct(IRunnable &target, long stackSize,
                        exit(0);
                }
 
-               memcpy(&Constructp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&Constructp, &tmpPtr, sizeof(tmpPtr));
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                preBlockEnd();
        }
@@ -1130,6 +1231,13 @@ result Thread::Construct(IRunnable &target, long stackSize,
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "xxd", (unsigned int) &target, stackSize, priority);
+               PACK_COMMON_END(ret, ret, blockresult);
+               PACK_THREAD((unsigned int) this, THREAD_OSPTHREAD_WORKER, THREAD_API_NEW);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return ret;
@@ -1150,14 +1258,16 @@ result Thread::Construct(const Tizen::Base::String &name, IRunnable &target,
 
        if (!Constructp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
                tmpPtr =
                                dlsym(
-                                               lib_handle,
+                                               lib_handle[LIBOSP_APPFW],
                                                "_ZN5Tizen4Base7Runtime6Thread9ConstructERKNS0_6StringERNS1_9IRunnableElNS1_14ThreadPriorityE");
 
                if (tmpPtr == NULL || dlerror() != NULL) {
@@ -1165,11 +1275,11 @@ result Thread::Construct(const Tizen::Base::String &name, IRunnable &target,
                        exit(0);
                }
 
-               memcpy(&Constructp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&Constructp, &tmpPtr, sizeof(tmpPtr));
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                preBlockEnd();
        }
@@ -1197,6 +1307,13 @@ result Thread::Construct(const Tizen::Base::String &name, IRunnable &target,
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "sxxd", temp, (unsigned int) &target, stackSize, priority);
+               PACK_COMMON_END(ret, ret, blockresult);
+               PACK_THREAD((unsigned int) this, THREAD_OSPTHREAD_WORKER, THREAD_API_NEW);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return ret;
@@ -1216,12 +1333,14 @@ result Thread::GetExitCode(int &exitCode) const {
 
        if (!GetExitCodep) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
-               tmpPtr = dlsym(lib_handle,
+               tmpPtr = dlsym(lib_handle[LIBOSP_APPFW],
                                "_ZNK5Tizen4Base7Runtime6Thread11GetExitCodeERi");
 
                if (tmpPtr == NULL || dlerror() != NULL) {
@@ -1229,11 +1348,11 @@ result Thread::GetExitCode(int &exitCode) const {
                        exit(0);
                }
 
-               memcpy(&GetExitCodep, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&GetExitCodep, &tmpPtr, sizeof(tmpPtr));
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                preBlockEnd();
        }
@@ -1261,6 +1380,13 @@ result Thread::GetExitCode(int &exitCode) const {
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "d", exitCode);
+               PACK_COMMON_END(ret, ret, blockresult);
+               PACK_THREAD((unsigned int) this, THREAD_OSPTHREAD_WORKER, THREAD_API_OTHER);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return ret;
@@ -1279,23 +1405,25 @@ const Tizen::Base::String & Thread::GetName(void) const {
 
        if (!GetNamep) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
-               tmpPtr = dlsym(lib_handle, "_ZNK5Tizen4Base7Runtime6Thread7GetNameEv");
+               tmpPtr = dlsym(lib_handle[LIBOSP_APPFW], "_ZNK5Tizen4Base7Runtime6Thread7GetNameEv");
 
                if (tmpPtr == NULL || dlerror() != NULL) {
                        perror("dlsym failed : Tizen::Base::Runtime::Thread::GetName");
                        exit(0);
                }
 
-               memcpy(&GetNamep, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&GetNamep, &tmpPtr, sizeof(tmpPtr));
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                preBlockEnd();
        }
@@ -1323,6 +1451,13 @@ const Tizen::Base::String & Thread::GetName(void) const {
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "s", temp);
+               PACK_COMMON_END(0, res, blockresult);
+               PACK_THREAD((unsigned int) this, THREAD_OSPTHREAD_WORKER, THREAD_API_OTHER);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return ret;
@@ -1341,23 +1476,25 @@ result Thread::Join(void) {
 
        if (!Joinp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
-               tmpPtr = dlsym(lib_handle, "_ZN5Tizen4Base7Runtime6Thread4JoinEv");
+               tmpPtr = dlsym(lib_handle[LIBOSP_APPFW], "_ZN5Tizen4Base7Runtime6Thread4JoinEv");
 
                if (tmpPtr == NULL || dlerror() != NULL) {
                        perror("dlsym failed : Tizen::Base::Runtime::Thread::Join");
                        exit(0);
                }
 
-               memcpy(&Joinp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&Joinp, &tmpPtr, sizeof(tmpPtr));
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                log.type = 0;
                log.length = 0;
@@ -1376,6 +1513,13 @@ result Thread::Join(void) {
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "", 0);
+               PACK_COMMON_END(0, 0, blockresult);
+               PACK_THREAD((unsigned int) this, THREAD_OSPTHREAD_WORKER, THREAD_API_WAIT_START);
+               FLUSH_LOCAL_BUF();
+
                preBlockEnd();
        }
        //
@@ -1401,6 +1545,13 @@ result Thread::Join(void) {
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "", 0);
+               PACK_COMMON_END(ret, ret, blockresult);
+               PACK_THREAD((unsigned int) this, THREAD_OSPTHREAD_WORKER, THREAD_API_WAIT_END);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return ret;
@@ -1447,11 +1598,11 @@ result Thread::Join(void) {
 //                     return null;
 //             }
 //
-//             memcpy(&Runp, &tmpPtr, sizeof(&tmpPtr));
+//             memcpy(&Runp, &tmpPtr, sizeof(tmpPtr));
 //             probeBlockEnd();
 //     }
 //
-//     if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+//     if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
 //             setProbePoint(&probeInfo);
 //             preBlockEnd();
 //     }
@@ -1496,23 +1647,25 @@ result Thread::Start(void) {
 
        if (!Startp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
-               tmpPtr = dlsym(lib_handle, "_ZN5Tizen4Base7Runtime6Thread5StartEv");
+               tmpPtr = dlsym(lib_handle[LIBOSP_APPFW], "_ZN5Tizen4Base7Runtime6Thread5StartEv");
 
                if (tmpPtr == NULL || dlerror() != NULL) {
                        perror("dlsym failed : Tizen::Base::Runtime::Thread::Start");
                        exit(0);
                }
 
-               memcpy(&Startp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&Startp, &tmpPtr, sizeof(tmpPtr));
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                preBlockEnd();
        }
@@ -1538,6 +1691,13 @@ result Thread::Start(void) {
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "", 0);
+               PACK_COMMON_END(ret, ret, blockresult);
+               PACK_THREAD((unsigned int) this, THREAD_OSPTHREAD_WORKER, THREAD_API_START);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return ret;
@@ -1554,23 +1714,25 @@ result Thread::Stop(void) {
 
        if (!Stopp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
-               tmpPtr = dlsym(lib_handle, "_ZN5Tizen4Base7Runtime6Thread4StopEv");
+               tmpPtr = dlsym(lib_handle[LIBOSP_APPFW], "_ZN5Tizen4Base7Runtime6Thread4StopEv");
 
                if (tmpPtr == NULL || dlerror() != NULL) {
                        perror("dlsym failed : Tizen::Base::Runtime::Thread::Stop");
                        exit(0);
                }
 
-               memcpy(&Stopp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&Stopp, &tmpPtr, sizeof(tmpPtr));
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                preBlockEnd();
        }
@@ -1596,6 +1758,13 @@ result Thread::Stop(void) {
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "", 0);
+               PACK_COMMON_END(ret, ret, blockresult);
+               PACK_THREAD((unsigned int) this, THREAD_OSPTHREAD_WORKER, THREAD_API_STOP);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return ret;
@@ -1614,23 +1783,25 @@ result EventDrivenThread::Construct(long stackSize, ThreadPriority priority) {
 
        if (!Constructp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
-               tmpPtr = dlsym(lib_handle,
+               tmpPtr = dlsym(lib_handle[LIBOSP_APPFW],
                                "_ZN5Tizen4Base7Runtime17EventDrivenThread9ConstructElNS1_14ThreadPriorityE");
                if (tmpPtr == NULL || dlerror() != NULL) {
                        perror("dlsym failed : Tizen::Base::Runtime::EventDrivenThread::Construct");
                        exit(0);
                }
 
-               memcpy(&Constructp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&Constructp, &tmpPtr, sizeof(tmpPtr));
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                preBlockEnd();
        }
@@ -1657,6 +1828,13 @@ result EventDrivenThread::Construct(long stackSize, ThreadPriority priority) {
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "xd", stackSize, priority);
+               PACK_COMMON_END(ret, ret, blockresult);
+               PACK_THREAD((unsigned int) this, THREAD_OSPTHREAD_EVENTDRIVEN, THREAD_API_NEW);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return ret;
@@ -1678,14 +1856,16 @@ result EventDrivenThread::Construct(const Tizen::Base::String &name, long stackS
 
        if (!Constructp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
                tmpPtr =
                                dlsym(
-                                               lib_handle,
+                                               lib_handle[LIBOSP_APPFW],
                                                "_ZN5Tizen4Base7Runtime17EventDrivenThread9ConstructERKNS0_6StringElNS1_14ThreadPriorityE");
 
                if (tmpPtr == NULL || dlerror() != NULL) {
@@ -1693,11 +1873,11 @@ result EventDrivenThread::Construct(const Tizen::Base::String &name, long stackS
                        exit(0);
                }
 
-               memcpy(&Constructp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&Constructp, &tmpPtr, sizeof(tmpPtr));
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                preBlockEnd();
        }
@@ -1725,6 +1905,13 @@ result EventDrivenThread::Construct(const Tizen::Base::String &name, long stackS
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "sx", temp, stackSize);
+               PACK_COMMON_END(ret, ret, blockresult);
+               PACK_THREAD((unsigned int) this, THREAD_OSPTHREAD_EVENTDRIVEN, THREAD_API_NEW);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return ret;
@@ -1743,23 +1930,25 @@ result EventDrivenThread::Quit() {
 
        if (!Quitp) {
                probeBlockStart();
-               void* lib_handle = dlopen("libosp-appfw.so", RTLD_LAZY);
-               if (lib_handle == NULL) {
-                       perror("dlopen failed : libosp-appfw.so");
-                       exit(0);
+               if(lib_handle[LIBOSP_APPFW] == NULL) {
+                       lib_handle[LIBOSP_APPFW] = dlopen(lib_string[LIBOSP_APPFW], RTLD_LAZY);
+                       if (lib_handle[LIBOSP_APPFW] == NULL) {
+                               perror("dlopen failed : libosp-appfw.so");
+                               exit(0);
+                       }
                }
-               tmpPtr = dlsym(lib_handle, "_ZN5Tizen4Base7Runtime17EventDrivenThread4QuitEv");
+               tmpPtr = dlsym(lib_handle[LIBOSP_APPFW], "_ZN5Tizen4Base7Runtime17EventDrivenThread4QuitEv");
 
                if (tmpPtr == NULL || dlerror() != NULL) {
                        perror("dlsym failed : Tizen::Base::Runtime::EventThread::Quit");
                        exit(0);
                }
 
-               memcpy(&Quitp, &tmpPtr, sizeof(&tmpPtr));
+               memcpy(&Quitp, &tmpPtr, sizeof(tmpPtr));
                probeBlockEnd();
        }
 
-       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering)) != 0) {
+       if ((blockresult = preBlockBegin(CALLER_ADDRESS, bfiltering, _sopt)) != 0) {
                setProbePoint(&probeInfo);
                preBlockEnd();
        }
@@ -1785,6 +1974,13 @@ result EventDrivenThread::Quit() {
                log.length += sprintf(log.data + log.length, "`,callstack_end");
 
                printLog(&log, MSG_LOG);
+
+               PREPARE_LOCAL_BUF();
+               PACK_COMMON_BEGIN(MSG_PROBE_THREAD, LC_THREAD, "", 0);
+               PACK_COMMON_END(ret, ret, blockresult);
+               PACK_THREAD((unsigned int) this, THREAD_OSPTHREAD_EVENTDRIVEN, THREAD_API_STOP);
+               FLUSH_LOCAL_BUF();
+
                postBlockEnd();
        }
        return ret;