NS_IMETHOD Run() { TableTicker *t = mozilla::tls::get<TableTicker>(pkey_ticker); char buff[MAXPATHLEN]; #ifdef ANDROID #define FOLDER "/sdcard/" #elif defined(XP_WIN) #define FOLDER "%TEMP%\\" #else #define FOLDER "/tmp/" #endif snprintf(buff, MAXPATHLEN, "%sprofile_%i_%i.txt", FOLDER, XRE_GetProcessType(), getpid()); #ifdef XP_WIN // Expand %TEMP% on Windows { char tmp[MAXPATHLEN]; ExpandEnvironmentStringsA(buff, tmp, mozilla::ArrayLength(tmp)); strcpy(buff, tmp); } #endif FILE* stream = ::fopen(buff, "w"); if (stream) { t->GetProfile()->WriteProfile(stream); ::fclose(stream); LOG("Saved to " FOLDER "profile_TYPE_PID.txt"); } else { LOG("Fail to open profile log file."); } return NS_OK; }
char* mozilla_sampler_get_profile() { TableTicker *t = mozilla::tls::get<TableTicker>(pkey_ticker); if (!t) { return NULL; } string profile; t->GetProfile()->ToString(&profile); char *rtn = (char*)malloc( (strlen(profile.c_str())+1) * sizeof(char) ); strcpy(rtn, profile.c_str()); return rtn; }