void CoreEngine::switchLib( void ) { std::string lib; if ( this->_lib != 1 && this->_renderLib->isKeyPressed( ILib::F1 ) ) { lib = "./libs/ncurses_lib/libncurses.dylib"; this->_lib = 1; } else if ( this->_lib != 2 && this->_renderLib->isKeyPressed( ILib::F2 ) ) { lib = "./libs/opengl_lib/libopengl.dylib"; this->_lib = 2; } else if ( this->_lib != 3 && this->_renderLib->isKeyPressed( ILib::F3 ) ) { lib = "./libs/sdl_lib/libsdl.dylib"; this->_lib = 3; } else return ; this->_renderLib->destroyWindow(); dlclose( this->_handle ); loadLib( lib ); if ( ! this->_renderLib->createWindow( 850, 550, "Test" ) ) { std::cerr << "Failed to create window !" << std::endl; return ; } this->_renderLib->updateKeys(); return ; }
JNIEXPORT void JNICALL Java_com_n0n3m4_q3e_Q3EJNI_init(JNIEnv *env, jclass c, jstring LibPath, jint width, jint height, jstring GameDir, jstring Cmdline) { char **argv; int argc=0; jboolean iscopy; const char *dir = (*env)->GetStringUTFChars( env, GameDir, &iscopy); const char *arg = (*env)->GetStringUTFChars( env, Cmdline, &iscopy); chdir(strdup(dir)); (*env)->ReleaseStringUTFChars(env, GameDir, dir); argv = malloc(sizeof(char*) * 255); argc = ParseCommandLine(strdup(arg), argv); (*env)->ReleaseStringUTFChars(env, Cmdline, arg); const char *libpath = (*env)->GetStringUTFChars( env, LibPath, &iscopy); loadLib(strdup(libpath)); (*env)->ReleaseStringUTFChars(env, LibPath, libpath); setCallbacks(&initAudio,&writeAudio,&setState); setResolution(width, height); qmain(argc, argv); free(argv); }
CoreEngine::CoreEngine( float fps, int lib ) : _fps( fps ), _game( NULL ), _isRunning( false ), _lib( lib ) { loadLib( "./libs/ncurses_lib/libncurses.dylib" ); return ; }
//______________________________________________________________________________ int execDictSelection() { std::cout << "*** Stress TClass with DictSelection ***\n"; loadLib("libclassesDictSelection_dictrflx.so"); propertiesNames Nullproperties; propertiesNames properties; std::vector<std::string> classNames={ "classVanilla", "classTemplateVanilla<char>", "classTransientMember", "classTestAutoselect", "classAutoselected", "classWithAttributes", "classAutoselectedFromTemplateElaborate1", "classAutoselectedFromTemplateElaborate2", "classRemoveTemplateArgs<float,bool>", "classRemoveTemplateArgs<testNs::D>", "testNs::classRemoveTemplateArgs2<float*>", "testNs::classRemoveTemplateArgs2<float*,int,classVanilla>", "testNs::classRemoveTemplateArgs2<int*>", "testNs::classRemoveTemplateArgs2<int*,int,classVanilla>", "testNs::classRemoveTemplateArgs2<classVanilla>", "testNs::classRemoveTemplateArgs2<classVanilla,int >", "testNs::classRemoveTemplateArgs2<classVanilla,int, classVanilla >", "testNs::classRemoveTemplateArgs2<classRemoveTemplateArgs<classAutoselected> >", "testNs::classRemoveTemplateArgs2<testNs::D>", "A<B<double,double>,int,float >", "A<B<double>,int,float >", "C<char>", "C<char,int,3>", "C<C<char>,C<char,C<C<char,int>,int>,3>>", "C<C<C<C<C<char>,C<char,C<C<char,int>,int>,3>>>,C<char,C<C<char,int>,int>,3>>,C<char,C<C<char,int>,int>,3>>", "myVector<C<char>>", "myVector<C<char,int>>", "myVector<C<char,int,3>>", "myVector<float>", "myVector<myVector<myVector<myVector<float>>>>", "myVector<float,myAllocator<float>>", "classTemplateElaborate<char>" }; // Start the tests for (auto& className : classNames) printClassInfo(className,Nullproperties,false); // Now some plain name checking for (auto& className : classNames) printNames(className); return 0; }
JNIEXPORT jstring JNICALL Java_com_max2idea_android_limbo_jni_VMExecutor_dnschangeaddr( JNIEnv* env, jobject thiz) { char res_msg[MSG_BUFSIZE + 1] = { 0 }; jclass c = (*env)->GetObjectClass(env, thiz); jfieldID fid = (*env)->GetFieldID(env, c, "dns_addr", "Ljava/lang/String;"); jstring jdns_addr = (*env)->GetObjectField(env, thiz, fid); const char * dns_addr_str = NULL; if (jdns_addr != NULL) dns_addr_str = (*env)->GetStringUTFChars(env, jdns_addr, 0); fid = (*env)->GetFieldID(env, c, "libqemu", "Ljava/lang/String;"); jstring jlib_path = (*env)->GetObjectField(env, thiz, fid); const char * lib_path_str = NULL; if (jlib_path != NULL) lib_path_str = (*env)->GetStringUTFChars(env, jlib_path, 0); // LOGV("Attempting to set DNS: %s\n",dns_addr_str); typedef void (*set_dns_addr_str_t)(); dlerror(); //LOAD LIB if (handle == NULL) { loadLib(lib_path_str); } if (!handle) { sprintf(res_msg, "%s: Error opening lib: %s :%s", __func__, lib_path_str, dlerror()); LOGV(res_msg); return (*env)->NewStringUTF(env, res_msg); } dlerror(); set_dns_addr_str_t set_dns_addr_str = (set_dns_addr_str_t) dlsym(handle, "set_dns_addr_str"); const char *dlsym_error = dlerror(); if (dlsym_error) { LOGV("Cannot load symbol 'set_dns_addr_str': %s\n", dlsym_error); // dlclose(handle); // handle = NULL; return (*env)->NewStringUTF(env, res_msg); } set_dns_addr_str(dns_addr_str); // sprintf(res_msg, "DNS Address Changed to: %s", dns_addr_str); LOGV(res_msg); return (*env)->NewStringUTF(env, res_msg); }
dpBinary* dpLoader::load(const char *path) { size_t len = strlen(path); if(len>=4) { if (_stricmp(&path[len-4], ".obj")==0) { return loadObj(path); } else if(_stricmp(&path[len-4], ".lib")==0) { return loadLib(path); } else if(_stricmp(&path[len-4], ".dll")==0 || _stricmp(&path[len-4], ".exe")==0) { return loadDll(path); } } dpPrintError("unrecognized file %s\n", path); return nullptr; }
Plugin::Plugin(const LXQt::PluginInfo &desktopFile, LXQt::Settings *settings, const QString &settingsGroup, LXQtPanel *panel) : QFrame(panel), mDesktopFile(desktopFile), mPluginLoader(0), mPlugin(0), mPluginWidget(0), mAlignment(AlignLeft), mPanel(panel) { mSettings = PluginSettingsFactory::create(settings, settingsGroup); connect(mSettings, SIGNAL(settingsChanged()), this, SLOT(settingsChanged())); setWindowTitle(desktopFile.name()); mName = desktopFile.name(); QStringList dirs; dirs << QProcessEnvironment::systemEnvironment().value("LXQTPANEL_PLUGIN_PATH").split(":"); dirs << PLUGIN_DIR; bool found = false; if(ILXQtPanelPluginLibrary const * pluginLib = findStaticPlugin(desktopFile.id())) { // this is a static plugin found = true; loadLib(pluginLib); } else { // this plugin is a dynamically loadable module QString baseName = QString("lib%1.so").arg(desktopFile.id()); foreach(QString dirName, dirs) { QFileInfo fi(QDir(dirName), baseName); if (fi.exists()) { found = true; if (loadModule(fi.absoluteFilePath())) break; } } }
// 0 means no opencl, 1 means opencl int clrInit() { int ret = 0; #ifdef _WIN32 const char *libname = "OpenCL.dll"; #else const char *libname = "libOpenCL.so"; #endif if((ret = loadLib(libname))) { if(ret == -3) // No OpenCL return 0; else return ret; } isCL = 1; // TODO: optimize by loading all functions here? return 0; }
Plugin::Plugin(const LxQt::PluginInfo &desktopFile, const QString &settingsFile, const QString &settingsGroup, LxQtPanel *panel) : QFrame(panel), mDesktopFile(desktopFile), mPluginLoader(0), mPlugin(0), mPluginWidget(0), mAlignment(AlignLeft), mSettingsGroup(settingsGroup), mPanel(panel) { mSettings = new LxQt::Settings(settingsFile, QSettings::IniFormat, this); connect(mSettings, SIGNAL(settingsChanged()), this, SLOT(settingsChanged())); mSettings->beginGroup(settingsGroup); mSettingsHash = calcSettingsHash(); setWindowTitle(desktopFile.name()); mName = desktopFile.name(); QStringList dirs; dirs << QProcessEnvironment::systemEnvironment().value("LXQTPANEL_PLUGIN_PATH").split(":"); dirs << PLUGIN_DIR; QString baseName = QString("lib%1.so").arg(desktopFile.id()); bool found = false; foreach(QString dirName, dirs) { QFileInfo fi(QDir(dirName), baseName); if (fi.exists()) { found = true; if (loadLib(fi.absoluteFilePath())) break; } }
/* XLibraryLoad: return 0 on success, ~0 on failure */ static int XLibraryLoad (const char *dllName, char *errBuf, int errBufSize) { char *errMsg; const char *symName; int rc, elen, cl; char *ebuf; if (isLoaded) return 0; h = loadLib (dllName, &errMsg); if (NULL == h) { if (NULL != errBuf) { elen = errBufSize; ebuf = errBuf; rc = sprintf (ebuf, "%.*s", elen, "Could not load shared library "); elen -= rc; ebuf+= rc; rc = sprintf (ebuf, "%.*s", elen, dllName); elen -= rc; ebuf+= rc; rc = sprintf (ebuf, "%.*s", elen, ": "); elen -= rc; ebuf+= rc; rc = sprintf (ebuf, "%.*s", elen, errMsg); elen -= rc; ebuf+= rc; errBuf[errBufSize-1] = '\0'; } return 1; } else { /* printf ("Loaded shared library %s successfully\n", dllName); */ if (errBuf && errBufSize) errBuf[0] = '\0'; } LOADIT(gevXCreate, "gevXCreate"); LOADIT(gevXCreateD, "CgevXCreateD"); LOADIT(gevXFree, "gevXFree"); LOADIT(gevXCheck, "CgevXCheck"); LOADIT(gevXAPIVersion, "CgevXAPIVersion"); if (!gevXAPIVersion(6,errBuf,&cl)) return 1; #define CheckAndLoad(f,nargs,prefix) \ if (!gevXCheck(#f,nargs,s,errBuf)) \ f = &d_##f; \ else { \ LOADIT(f,prefix #f); \ } {int s[]={0,59,15,1}; CheckAndLoad(gevRegisterWriteCallback,3,""); } {int s[]={0,1,1,1,1}; CheckAndLoad(gevCompleteEnvironment,4,""); } {int s[]={3,11}; CheckAndLoad(gevInitEnvironmentLegacy,1,"C"); } {int s[]={15,3,11,15,11,15,59,1,2}; CheckAndLoad(gevSwitchLogStat,8,"C"); } {int s[]={1}; CheckAndLoad(gevGetLShandle,0,""); } {int s[]={15,2}; CheckAndLoad(gevRestoreLogStat,1,""); } {int s[]={15,2}; CheckAndLoad(gevRestoreLogStatRewrite,1,""); } {int s[]={0,11}; CheckAndLoad(gevLog,1,"C"); } {int s[]={0,9}; CheckAndLoad(gevLogPChar,1,""); } {int s[]={0,11}; CheckAndLoad(gevStat,1,"C"); } {int s[]={0,11}; CheckAndLoad(gevStatC,1,"C"); } {int s[]={0,9}; CheckAndLoad(gevStatPChar,1,""); } {int s[]={0,11}; CheckAndLoad(gevStatAudit,1,"C"); } {int s[]={0}; CheckAndLoad(gevStatCon,0,""); } {int s[]={0}; CheckAndLoad(gevStatCoff,0,""); } {int s[]={0}; CheckAndLoad(gevStatEOF,0,""); } {int s[]={0}; CheckAndLoad(gevStatSysout,0,""); } {int s[]={0,3,11}; CheckAndLoad(gevStatAddE,2,"C"); } {int s[]={0,3,11}; CheckAndLoad(gevStatAddV,2,"C"); } {int s[]={0,3,3,11}; CheckAndLoad(gevStatAddJ,3,"C"); } {int s[]={0}; CheckAndLoad(gevStatEject,0,""); } {int s[]={0,18}; CheckAndLoad(gevStatEdit,1,""); } {int s[]={0,11,3,11}; CheckAndLoad(gevStatE,3,"C"); } {int s[]={0,11,3,11}; CheckAndLoad(gevStatV,3,"C"); } {int s[]={0}; CheckAndLoad(gevStatT,0,""); } {int s[]={0,11}; CheckAndLoad(gevStatA,1,"C"); } {int s[]={0,11}; CheckAndLoad(gevStatB,1,"C"); } {int s[]={0,11}; CheckAndLoad(gevLogStat,1,"C"); } {int s[]={0,11}; CheckAndLoad(gevLogStatNoC,1,"C"); } {int s[]={0,9}; CheckAndLoad(gevLogStatPChar,1,""); } {int s[]={0}; CheckAndLoad(gevLogStatFlush,0,""); } {int s[]={12,11}; CheckAndLoad(gevGetAnchor,1,"C"); } {int s[]={3,11,12}; CheckAndLoad(gevStatAppend,2,"C"); } {int s[]={3,11,12}; CheckAndLoad(gevGetSlvExeInfo,2,"C"); } {int s[]={3,11,12,12,4}; CheckAndLoad(gevGetSlvLibInfo,4,"C"); } {int s[]={3,3,11,20}; CheckAndLoad(gevCapabilityCheck,3,"C"); } {int s[]={3}; CheckAndLoad(gevNumSolvers,0,""); } {int s[]={12,3}; CheckAndLoad(gevGetSolver,1,"C"); } {int s[]={12,3}; CheckAndLoad(gevGetSolverDefault,1,"C"); } {int s[]={3,11}; CheckAndLoad(gevSolver2Id,1,"C"); } {int s[]={12,3}; CheckAndLoad(gevId2Solver,1,"C"); } {int s[]={12}; CheckAndLoad(gevCallSolverNextGridDir,0,"C"); } {int s[]={3,1,11,11,3,3,11,11,13,3,3,13,13,2,12}; CheckAndLoad(gevCallSolver,14,"C"); } {int s[]={3,1}; CheckAndLoad(gevCallSolverHandleStatus,1,""); } {int s[]={3,2}; CheckAndLoad(gevCallSolverHandleDelete,1,""); } {int s[]={3,2,1}; CheckAndLoad(gevCallSolverHandleCollect,2,""); } {int s[]={3,11}; CheckAndLoad(gevGetIntOpt,1,"C"); } {int s[]={13,11}; CheckAndLoad(gevGetDblOpt,1,"C"); } {int s[]={12,11}; CheckAndLoad(gevGetStrOpt,1,"C"); } {int s[]={0,11,3}; CheckAndLoad(gevSetIntOpt,2,"C"); } {int s[]={0,11,13}; CheckAndLoad(gevSetDblOpt,2,"C"); } {int s[]={0,11,11}; CheckAndLoad(gevSetStrOpt,2,"C"); } {int s[]={0,1}; CheckAndLoad(gevSynchronizeOpt,1,""); } {int s[]={13}; CheckAndLoad(gevTimeJNow,0,""); } {int s[]={13}; CheckAndLoad(gevTimeDiff,0,""); } {int s[]={13}; CheckAndLoad(gevTimeDiffStart,0,""); } {int s[]={0}; CheckAndLoad(gevTimeSetStart,0,""); } {int s[]={0}; CheckAndLoad(gevTerminateUninstall,0,""); } {int s[]={0}; CheckAndLoad(gevTerminateInstall,0,""); } {int s[]={0,1,1}; CheckAndLoad(gevTerminateSet,2,""); } {int s[]={15}; CheckAndLoad(gevTerminateGet,0,""); } {int s[]={0}; CheckAndLoad(gevTerminateClear,0,""); } {int s[]={0}; CheckAndLoad(gevTerminateRaise,0,""); } {int s[]={0,2,2}; CheckAndLoad(gevTerminateGetHandler,2,""); } {int s[]={12,11}; CheckAndLoad(gevGetScratchName,1,"C"); } {int s[]={3,11,1,21}; CheckAndLoad(gevWriteModelInstance,3,"C"); } {int s[]={3,2,1}; CheckAndLoad(gevInitJacLegacy,2,""); } {int s[]={0,1,3,8,3,8}; CheckAndLoad(gevSetColRowPermLegacy,5,""); } {int s[]={0,1,3,8,8}; CheckAndLoad(gevSetJacPermLegacy,4,""); } {int s[]={3,1,6}; CheckAndLoad(gevEvalNewPointLegacy,2,""); } {int s[]={3,1,3,6,22,6,21,21}; CheckAndLoad(gevEvalJacLegacy,7,""); } {int s[]={3,1,3,8,6,6,6,21,21}; CheckAndLoad(gevEvalJacLegacyX,8,""); } {int s[]={3,1,3}; CheckAndLoad(gevNextNLLegacy,2,""); } {int s[]={3,1,3}; CheckAndLoad(gevRowGms2SlvLegacy,2,""); } {int s[]={0,2}; CheckAndLoad(gevFreeJacLegacy,1,""); } {int s[]={1}; CheckAndLoad(gevGetALGX,0,""); } {int s[]={0,15}; CheckAndLoad(gevSkipIOLegacySet,1,""); } {int s[]={3}; CheckAndLoad(gevThreads,0,""); } return 0; symMissing: if (errBuf && errBufSize>0) { elen = errBufSize; ebuf = errBuf; rc = sprintf (ebuf, "%.*s", elen, "Could not load symbol '"); elen -= rc; ebuf+= rc; rc = sprintf (ebuf, "%.*s", elen, symName); elen -= rc; ebuf+= rc; rc = sprintf (ebuf, "%.*s", elen, "': "); elen -= rc; ebuf+= rc; rc = sprintf (ebuf, "%.*s", elen, errMsg); elen -= rc; ebuf+= rc; errBuf[errBufSize-1] = '\0'; /* printf ("%s\n", errBuf); */ return 2; } return 0; } /* XLibraryLoad */
void phhijing(const int nevents = 10, const int outputnameindex = 0) { TString temp = Form("phhijing_pp_%d.root",outputnameindex); //TString temp = Form("/phenix/scratch/xuq/Hijing/phhijing_dAu_%d.root",outputnameindex); //TString temp = Form("./phhijing_He3Au_%d.root",outputnameindex); char *outputname = temp.Data(); gSystem->Load("libfun4allfuncs.so"); // framework + reco modules gSystem->Load("libsimreco.so"); // framework + reco modules loadLib("/direct/phenix+plhf/xuq/phenix/MCgen/event_gen/lib/lib/libPHHijing"); recoConsts *rc = recoConsts::instance(); rc->set_IntFlag("RUNNUMBER",0); ///////////////////////////////////////////////////////////////// // Server... Fun4AllServer *se = Fun4AllServer::instance(); se->Verbosity(0); ///////////////////////////////////////////////////////////////// // Reconstruction Modules... SubsysReco *sync = new SyncSimreco(); se->registerSubsystem(sync); PHHijing* ss = new PHHijing(); // ss->SetSeed(99); //ss->SetOscarOut("pythia.osc"); // Set this to write to an oscar file //ss->SetSeed(1999); // Set your own seed, otherwise, defaults to seed = time se->registerSubsystem(ss); // Example: Turn off all B and D decays /* ss->SetDecay(411,0); ss->SetDecay(-411,0); ss->SetDecay(421,0); ss->SetDecay(-421,0); ss->SetDecay(431,0); ss->SetDecay(-431,0); ss->SetDecay(511,0); ss->SetDecay(-511,0); ss->SetDecay(521,0); ss->SetDecay(-521,0); ss->SetDecay(531,0); ss->SetDecay(-531,0); */ //** Here you could put a module to trigger on selected events //** Select only one of the trigger types below //PHPyTrigger *phpytrigger = new PHPyTrigger(); //phpytrigger->SetTrigger( PHPyTrigger::CHIC_MUONARM ); //phpytrigger->SetTrigger( PHPyTrigger::PI0_CENTARM ); //phpytrigger->SetEThreshold( 2.0 ); //se->registerSubsystem(phpytrigger); //PHPyTrigger* trigger = new PHFvtxTrigger(); //se->registerSubsystem(trigger); Fun4AllDummyInputManager *in1 = new Fun4AllDummyInputManager("DSTin1", "DST"); se->registerInputManager(in1); TString OUTPUT = outputname; Fun4AllDstOutputManager *dst_output_mgr = new Fun4AllDstOutputManager("PHHIJING",OUTPUT.Data()); dst_output_mgr->AddNode("Sync"); dst_output_mgr->AddNode("PHHijingHeader"); dst_output_mgr->AddNode("PHHijing"); se->registerOutputManager(dst_output_mgr); se->run(nevents); // run over all events se->End(); }
void InfoLoader::run() { QFile htmlfile("://Qt_info.html"); htmlfile.open(QIODevice::ReadOnly); html = htmlfile.readAll(); // QString loadinghtml = html; // loadinghtml.replace("__SECTIONTEMPLATE__", "Please wait, reading data"); // ui->webView->setHtml(loadinghtml,QUrl("qrc:/")); QString key = "Qt version"; QString value = qVersion(); QStringList valuelist; qDebug() << key << value ; addToTemplate(key, value); #if QT_VERSION >= 0x050000 addToTemplate("Platform", qApp->platformName()); #endif emit newInfoAvailable("Checking build date..."); key = "Qt build"; value = QLibraryInfo::buildDate().toString()+ ", "; #if QT_VERSION < 0x050000 value += QLibraryInfo::buildKey() + ", "; #endif value += QLibraryInfo::licensee(); addToTemplate(key, value); emit newInfoAvailable("Checking country/language..."); key = "Country"; QLocale defaultlocale; value = QLocale::countryToString(defaultlocale.country()); addToTemplate(key, value); key = "Language"; value = QLocale::languageToString(defaultlocale.language()) + " (" + defaultlocale.name() + ")"; addToTemplate(key, value); emit newInfoAvailable("Checking Qt modules..."); key = "Qt modules"; value = ""; QStringList qtlibs; QStringList qtmobilitylibs; qtlibs << "Qt3Support"; qtlibs << "QAxContainer"; qtlibs << "QAxServer"; qtlibs << "QtCLucene"; qtlibs << "QtCore"; qtlibs << "QtDBus"; qtlibs << "QtDeclarative"; // 4.7 qtlibs << "QtDesignerComponents"; qtlibs << "QtDesigner"; qtlibs << "QtGui"; qtlibs << "QtHelp"; qtlibs << "QtMultimedia"; qtlibs << "QtMaemo5"; // 4.6 qtlibs << "phonon"; qtlibs << "QtNetwork"; // includes QtBearer starting w 4.7 qtlibs << "QtOpenGL"; qtlibs << "QtOpenVG"; // 4.6 qtlibs << "QtScript"; qtlibs << "QtScriptTools"; qtlibs << "QtSql"; qtlibs << "QtSvg"; qtlibs << "QtTest"; qtlibs << "QtUiTools"; qtlibs << "QtWebKit"; qtlibs << "QtXmlPatterns"; qtlibs << "QtXml"; qtlibs << "Qt5AndroidExtras"; // 5.2 qtlibs << "Qt5Bluetooth"; // 5.2 qtlibs << "Qt5CLucene"; qtlibs << "Qt5Concurrent"; qtlibs << "Qt5Core"; qtlibs << "Qt5Declarative"; qtlibs << "Qt5DBus"; qtlibs << "Qt5Designer"; qtlibs << "Qt5DesignerComponents"; qtlibs << "Qt5Gui"; qtlibs << "Qt5Help"; qtlibs << "Qt5MacExtras"; // 5.2 qtlibs << "Qt5Multimedia"; qtlibs << "Qt5MultimediaQuick_p"; qtlibs << "Qt5MultimediaWidgets"; qtlibs << "Qt5Network"; qtlibs << "Qt5Nfc"; // 5.2 qtlibs << "Qt5OpenGL"; qtlibs << "Qt5Positioning"; // 5.2 qtlibs << "Qt5PrintSupport"; qtlibs << "Qt5Qml"; qtlibs << "Qt5Quick"; qtlibs << "Qt5QuickParticles"; qtlibs << "Qt5QuickTest"; qtlibs << "Qt5SerialPort"; // 5.1 qtlibs << "Qt5Script"; qtlibs << "Qt5ScriptTools"; qtlibs << "Qt5Sensors"; // 5.1 qtlibs << "Qt5Sql"; qtlibs << "Qt5Svg"; qtlibs << "Qt5Test"; qtlibs << "Qt5V8"; qtlibs << "Qt5WebKit"; qtlibs << "Qt5WebKitWidgets"; qtlibs << "Qt5Widgets"; qtlibs << "Qt5WinExtras"; // 5.2 qtlibs << "Qt5X11Extras"; // 5.1 qtlibs << "Qt5Xml"; qtlibs << "Qt5XmlPatterns"; qtmobilitylibs << "QtBearer"; // 1.0.x ONLY qtmobilitylibs << "QtConnectivity"; // 1.2 qtmobilitylibs << "QtContacts"; qtmobilitylibs << "QtFeedback"; // 1.1 qtmobilitylibs << "QtGallery"; // 1.1 qtmobilitylibs << "QtLocation"; qtmobilitylibs << "QtMultimediaKit"; qtmobilitylibs << "QtSensors"; qtmobilitylibs << "QtServiceFramework"; qtmobilitylibs << "QtSystemInfo"; qtmobilitylibs << "QtOrganizer"; // 1.1 qtmobilitylibs << "QtPublishSubscribe"; qtmobilitylibs << "QtVersitOrganizer"; // 1.1 qtmobilitylibs << "QtVersit"; qtlibs.append(qtmobilitylibs); int progressTotalSteps = qtlibs.count() + 14; // 14 = number of loadInfos we're going to do later. #automateme int progressStep = 0; foreach(QString libname, qtlibs) { emit newInfoAvailable(QString("Locating %0...").arg(libname)); QString libfilename = loadLib(libname); if (!libfilename.isEmpty()) { emit newInfoAvailable(QString("Found as %0 ").arg(libfilename)); value += libname.replace("lib", "") + " "; installedlibs << libname; } else { emit newInfoAvailable(QString("Not found")); } emit progressChange((int)(++progressStep*100.0/(float)progressTotalSteps)); }
JNIEXPORT jstring JNICALL Java_com_max2idea_android_limbo_jni_VMExecutor_start( JNIEnv* env, jobject thiz) { int res; char res_msg[MSG_BUFSIZE + 1] = { 0 }; if (started) { sprintf(res_msg, "VM Already started"); LOGV(res_msg); return (*env)->NewStringUTF(env, res_msg); } LOGV("***************** INIT LIMBO ************************"); /* Read the member values from the Java Object */ jclass c = (*env)->GetObjectClass(env, thiz); jfieldID fid = (*env)->GetFieldID(env, c, "cpu", "Ljava/lang/String;"); jstring jcpu = (*env)->GetObjectField(env, thiz, fid); const char *cpu_str = NULL; if (jcpu != NULL) cpu_str = (*env)->GetStringUTFChars(env, jcpu, 0); LOGV("CPU= %s", cpu_str); fid = (*env)->GetFieldID(env, c, "machine_type", "Ljava/lang/String;"); jstring jmachine_type = (*env)->GetObjectField(env, thiz, fid); const char *machine_type_str = NULL; if (jmachine_type != NULL) machine_type_str = (*env)->GetStringUTFChars(env, jmachine_type, 0); LOGV("Machine Type= %s", machine_type_str); fid = (*env)->GetFieldID(env, c, "memory", "I"); int mem = (*env)->GetIntField(env, thiz, fid); LOGV("MEM= %d", mem); fid = (*env)->GetFieldID(env, c, "cpuNum", "I"); int cpuNum = (*env)->GetIntField(env, thiz, fid); LOGV("CPU Num= %d", cpuNum); fid = (*env)->GetFieldID(env, c, "disableacpi", "I"); int disableacpi = (*env)->GetIntField(env, thiz, fid); fid = (*env)->GetFieldID(env, c, "disablehpet", "I"); int disablehpet = (*env)->GetIntField(env, thiz, fid); fid = (*env)->GetFieldID(env, c, "usbmouse", "I"); int usbmouse = (*env)->GetIntField(env, thiz, fid); fid = (*env)->GetFieldID(env, c, "enableqmp", "I"); int enableqmp = (*env)->GetIntField(env, thiz, fid); fid = (*env)->GetFieldID(env, c, "enablevnc", "I"); int enablevnc = (*env)->GetIntField(env, thiz, fid); fid = (*env)->GetFieldID(env, c, "vnc_allow_external", "I"); int vnc_allow_external = (*env)->GetIntField(env, thiz, fid); LOGV("vnc_allow_external= %d", vnc_allow_external); fid = (*env)->GetFieldID(env, c, "hda_img_path", "Ljava/lang/String;"); jstring jhda_img_path = (*env)->GetObjectField(env, thiz, fid); const char * hda_img_path_str = NULL; if (jhda_img_path != NULL) hda_img_path_str = (*env)->GetStringUTFChars(env, jhda_img_path, 0); LOGV("HDA= %s", hda_img_path_str); fid = (*env)->GetFieldID(env, c, "hdb_img_path", "Ljava/lang/String;"); jstring jhdb_img_path = (*env)->GetObjectField(env, thiz, fid); const char * hdb_img_path_str = NULL; if (jhdb_img_path != NULL) hdb_img_path_str = (*env)->GetStringUTFChars(env, jhdb_img_path, 0); fid = (*env)->GetFieldID(env, c, "cd_iso_path", "Ljava/lang/String;"); jstring jcdrom_iso_path = (*env)->GetObjectField(env, thiz, fid); const char * cdrom_iso_path_str = NULL; if (jcdrom_iso_path != NULL) cdrom_iso_path_str = (*env)->GetStringUTFChars(env, jcdrom_iso_path, 0); fid = (*env)->GetFieldID(env, c, "fda_img_path", "Ljava/lang/String;"); jstring jfda_img_path = (*env)->GetObjectField(env, thiz, fid); const char * fda_img_path_str = NULL; if (jfda_img_path != NULL) fda_img_path_str = (*env)->GetStringUTFChars(env, jfda_img_path, 0); fid = (*env)->GetFieldID(env, c, "fdb_img_path", "Ljava/lang/String;"); jstring jfdb_img_path = (*env)->GetObjectField(env, thiz, fid); const char * fdb_img_path_str = NULL; if (jfdb_img_path != NULL) fdb_img_path_str = (*env)->GetStringUTFChars(env, jfdb_img_path, 0); fid = (*env)->GetFieldID(env, c, "bootdevice", "Ljava/lang/String;"); jstring jboot_dev = (*env)->GetObjectField(env, thiz, fid); const char * boot_dev_str = NULL; if (jboot_dev != NULL) boot_dev_str = (*env)->GetStringUTFChars(env, jboot_dev, 0); fid = (*env)->GetFieldID(env, c, "net_cfg", "Ljava/lang/String;"); jstring jnet = (*env)->GetObjectField(env, thiz, fid); const char * net_str = NULL; if (jnet != NULL) net_str = (*env)->GetStringUTFChars(env, jnet, 0); fid = (*env)->GetFieldID(env, c, "nic_driver", "Ljava/lang/String;"); jstring jnic_driver = (*env)->GetObjectField(env, thiz, fid); const char * nic_driver_str = NULL; if (jnic_driver != NULL) nic_driver_str = (*env)->GetStringUTFChars(env, jnic_driver, 0); fid = (*env)->GetFieldID(env, c, "libqemu", "Ljava/lang/String;"); jstring jlib_path = (*env)->GetObjectField(env, thiz, fid); const char * lib_path_str = NULL; if (jlib_path != NULL) lib_path_str = (*env)->GetStringUTFChars(env, jlib_path, 0); fid = (*env)->GetFieldID(env, c, "vga_type", "Ljava/lang/String;"); jstring jvga_type = (*env)->GetObjectField(env, thiz, fid); const char * vga_type_str = NULL; if (jvga_type != NULL) vga_type_str = (*env)->GetStringUTFChars(env, jvga_type, 0); fid = (*env)->GetFieldID(env, c, "hd_cache", "Ljava/lang/String;"); jstring jhd_cache = (*env)->GetObjectField(env, thiz, fid); const char * hd_cache_str = NULL; if (jhd_cache != NULL) hd_cache_str = (*env)->GetStringUTFChars(env, jhd_cache, 0); fid = (*env)->GetFieldID(env, c, "sound_card", "Ljava/lang/String;"); jstring jsound_card = (*env)->GetObjectField(env, thiz, fid); const char * sound_card_str = NULL; if (jsound_card != NULL) sound_card_str = (*env)->GetStringUTFChars(env, jsound_card, 0); fid = (*env)->GetFieldID(env, c, "snapshot_name", "Ljava/lang/String;"); jstring jsnapshot_name = (*env)->GetObjectField(env, thiz, fid); const char * snapshot_name_str = NULL; if (jsnapshot_name != NULL) snapshot_name_str = (*env)->GetStringUTFChars(env, jsnapshot_name, 0); fid = (*env)->GetFieldID(env, c, "vnc_passwd", "Ljava/lang/String;"); jstring jvnc_passwd = (*env)->GetObjectField(env, thiz, fid); const char * vnc_passwd_str = NULL; if (jvnc_passwd != NULL) vnc_passwd_str = (*env)->GetStringUTFChars(env, jvnc_passwd, 0); fid = (*env)->GetFieldID(env, c, "base_dir", "Ljava/lang/String;"); jstring jbase_dir = (*env)->GetObjectField(env, thiz, fid); const char * base_dir_str = NULL; if (jbase_dir != NULL) base_dir_str = (*env)->GetStringUTFChars(env, jbase_dir, 0); fid = (*env)->GetFieldID(env, c, "dns_addr", "Ljava/lang/String;"); jstring jdns_addr = (*env)->GetObjectField(env, thiz, fid); const char * dns_addr_str = NULL; if (jdns_addr != NULL) dns_addr_str = (*env)->GetStringUTFChars(env, jdns_addr, 0); fid = (*env)->GetFieldID(env, c, "kernel", "Ljava/lang/String;"); jstring jkernel = (*env)->GetObjectField(env, thiz, fid); const char * kernel_str = NULL; if (jkernel != NULL) kernel_str = (*env)->GetStringUTFChars(env, jkernel, 0); fid = (*env)->GetFieldID(env, c, "arch", "Ljava/lang/String;"); jstring jarch = (*env)->GetObjectField(env, thiz, fid); const char * arch_str = NULL; if (jarch != NULL) arch_str = (*env)->GetStringUTFChars(env, jarch, 0); fid = (*env)->GetFieldID(env, c, "append", "Ljava/lang/String;"); jstring jappend = (*env)->GetObjectField(env, thiz, fid); const char * append_str = NULL; if (jappend != NULL) append_str = (*env)->GetStringUTFChars(env, jappend, 0); fid = (*env)->GetFieldID(env, c, "initrd", "Ljava/lang/String;"); jstring jinitrd = (*env)->GetObjectField(env, thiz, fid); const char * initrd_str = NULL; if (jinitrd != NULL) initrd_str = (*env)->GetStringUTFChars(env, jinitrd, 0); fid = (*env)->GetFieldID(env, c, "aiomaxthreads", "I"); int aiomaxthreads = (*env)->GetIntField(env, thiz, fid); LOGV("Finished getting Java fields"); int params = 4; if (cpu_str != NULL && strcmp(cpu_str, "Default") != 0) { params += 2; } if (hda_img_path_str != NULL) { params += 2; } if (hdb_img_path_str != NULL) { params += 2; } //if (cdrom_iso_path_str != NULL) { //Always define a cdrom drive params += 2; //} //if (fda_img_path_str != NULL) { //Always define a diskette drive params += 2; //} // if (fdb_img_path_str != NULL) {//Always define a diskette drive params += 2; // } if (net_str != NULL) { params += 2; } if (nic_driver_str != NULL) { LOGV("Adding params for NIC driver"); params += 2; } if (boot_dev_str != NULL) { params += 2; } if (vga_type_str != NULL && strncmp(arch_str, "arm", 3) != 0) { params += 2; } if (sound_card_str != NULL || (strncmp(arch_str, "arm", 3) == 0)) { params += 2; } if (disableacpi) { params += 1; } if (disablehpet) { params += 1; } if (usbmouse) { params += 3; } if (snapshot_name_str != NULL && strcmp(snapshot_name_str, "") != 0) { params += 2; } if (enableqmp) { params += 1; } if (enablevnc) { params += 2; } else { //SDL needs keyboard layout params += 2; //For -k option } params += 2; // For CPU option params += 2; //For -smp option params += 2; //For -M option //MK TESTING //params +=2; //MK OUT if (strncmp(arch_str, "arm", 3) == 0) { if (kernel_str != NULL && strcmp(kernel_str, "") != 0) params += 2; if (initrd_str != NULL && strcmp(initrd_str, "") != 0) params += 2; if (append_str != NULL && strcmp(append_str, "") != 0) params += 2; } char mem_str[MAX_STRING_LEN] = "128"; sprintf(mem_str, "%d", mem); char cpu_num_str[MAX_STRING_LEN] = "1"; sprintf(cpu_num_str, "%d", cpuNum); int i = 0; LOGV("Params = %d", params); char ** argv = (char **) malloc(params * sizeof(*argv)); for (i = 0; i < params; i++) { argv[i] = (char *) malloc(MAX_STRING_LEN * sizeof(char)); } int param = 0; strcpy(argv[param++], lib_path_str); if (strncmp(arch_str, "arm", 3) == 0) { if (kernel_str != NULL && strcmp(kernel_str, "") != 0) { strcpy(argv[param++], "-kernel"); strcpy(argv[param++], kernel_str); } if (initrd_str != NULL && strcmp(initrd_str, "") != 0) { strcpy(argv[param++], "-initrd"); strcpy(argv[param++], initrd_str); } if (append_str != NULL && strcmp(append_str, "") != 0) { strcpy(argv[param++], "-append"); strcpy(argv[param++], append_str); } } if (cpu_str != NULL && strncmp(cpu_str, "Default", 7) != 0) { strcpy(argv[param++], "-cpu"); strcpy(argv[param++], cpu_str); } strcpy(argv[param++], "-m"); strcpy(argv[param++], mem_str); strcpy(argv[param++], "-L"); strcpy(argv[param++], base_dir_str); if (hda_img_path_str != NULL) { strcpy(argv[param++], "-hda"); strcpy(argv[param++], hda_img_path_str); // strcpy(argv[param++], "-drive"); // strcpy(argv[param], "file="); // strcat(argv[param], hda_img_path_str); // strcat(argv[param], ",index=0,media=disk"); // // if(strncmp(arch_str, "arm", 3) == 0){ // strcat(argv[param], ",if=scsi"); //// strcat(argv[param], ",if=ide"); //// strcat(argv[param], ",if=sd"); // }else { // strcat(argv[param], ",if=ide"); // } // // // strcat(argv[param], ",if=scsi,bus=0,unit=6"); //scsi interface not working // strcat(argv[param], ",aio=threads"); // if (hd_cache_str != NULL && strcmp(hd_cache_str, "default") != 0) { // strcat(argv[param], ",cache="); // strcat(argv[param++], hd_cache_str); // } else { // param++; // } } if (hdb_img_path_str != NULL) { strcpy(argv[param++], "-hdb"); strcpy(argv[param++], hdb_img_path_str); // //MORE OPTIONS // strcpy(argv[param++], "-drive"); // strcpy(argv[param], "file="); // strcat(argv[param], hdb_img_path_str); // strcat(argv[param], ",index=1,media=disk"); // // if(strncmp(arch_str, "arm", 3) == 0){ // strcat(argv[param], ",if=scsi"); // // strcat(argv[param], ",if=ide"); //// strcat(argv[param], ",if=sd"); // Trying SD card for arm // }else { // strcat(argv[param], ",if=ide"); // } // // strcat(argv[param], ",if=scsi,bus=0,unit=7"); //scsi interface not working // strcat(argv[param], ",aio=threads"); // if (hd_cache_str != NULL && strcmp(hd_cache_str, "default") != 0) { // strcat(argv[param], ",cache="); // strcat(argv[param++], hd_cache_str); // } else { // param++; // } } if (cdrom_iso_path_str != NULL) { LOGV("Adding CD"); strcpy(argv[param++], "-cdrom"); strcpy(argv[param++], cdrom_iso_path_str); } else { //empty cdrom strcpy(argv[param++], "-drive"); strcpy(argv[param++], "index=2,media=cdrom"); } if (fda_img_path_str != NULL) { LOGV("Adding FDA"); strcpy(argv[param++], "-fda"); strcpy(argv[param++], fda_img_path_str); } else { strcpy(argv[param++], "-drive"); //Always define floppy strcpy(argv[param++], "index=0,if=floppy"); } if (fdb_img_path_str != NULL) { //Second floppy is optional LOGV("Adding FDB"); strcpy(argv[param++], "-fdb"); strcpy(argv[param++], fdb_img_path_str); } else { strcpy(argv[param++], "-drive"); //Always define floppy strcpy(argv[param++], "index=1,if=floppy"); } if (vga_type_str != NULL && strncmp(arch_str, "arm", 3) != 0) { LOGV("Adding vga: %s", vga_type_str); strcpy(argv[param++], "-vga"); strcpy(argv[param++], vga_type_str); //[std|cirrus|vmware|qxl|xenfb|none] //select video card type } if (boot_dev_str != NULL) { LOGV("Adding boot device: %s", boot_dev_str); strcpy(argv[param++], "-boot"); strcpy(argv[param++], boot_dev_str); } if (net_str != NULL) { LOGV("Adding Net: %s", net_str); strcpy(argv[param++], "-net"); if (strcmp(net_str, "user") == 0) { strcpy(argv[param], net_str); } else if (strcmp(net_str, "tap") == 0) { strcpy(argv[param], "tap,vlan=0,ifname=tap0,script=no"); } else if (strcmp(net_str, "none") == 0) { strcpy(argv[param], "none"); } else { LOGV("Unknown iface: %s", net_str); strcpy(argv[param], "none"); } //FIXME: NOT WORKING setting DNS workaround below // LOGV("DNS=%s",dns_addr_str); // if(dns_addr_str!=NULL){ // strcat(argv[param], ",dns="); // strcat(argv[param], dns_addr_str); // } param++; } if (nic_driver_str != NULL) { LOGV("Adding NIC: %s", nic_driver_str); strcpy(argv[param++], "-net"); if (strncmp(arch_str, "arm", 3) == 0) { strcpy(argv[param], "nic"); param++; } else if (strcmp(net_str, "user") == 0) { strcpy(argv[param], "nic,model="); strcat(argv[param++], nic_driver_str); } else if (strcmp(net_str, "tap") == 0) { strcpy(argv[param], "nic,vlan=0,model="); strcat(argv[param++], nic_driver_str); } } if (sound_card_str != NULL && strcmp(sound_card_str, "None") != 0) { LOGV("Adding Sound: %s", sound_card_str); strcpy(argv[param++], "-soundhw"); strcpy(argv[param++], sound_card_str); } if (strncmp(arch_str, "arm", 3) == 0) { strcpy(argv[param++], "-soundhw"); strcpy(argv[param++], "all"); } if (snapshot_name_str != NULL && strcmp(snapshot_name_str, "") != 0) { LOGV("Adding snapshot: %s", snapshot_name_str); strcpy(argv[param++], "-loadvm"); strcpy(argv[param++], snapshot_name_str); } if (usbmouse) { LOGV("Adding USB MOUSE"); strcpy(argv[param++], "-usb"); strcpy(argv[param++], "-usbdevice"); strcpy(argv[param++], "tablet"); } if (disableacpi) { LOGV("Disabling ACPI"); strcpy(argv[param++], "-no-acpi"); //disable ACPI } if (disablehpet) { LOGV("Disabling HPET"); strcpy(argv[param++], "-no-hpet"); // disable HPET } if (enableqmp) { //Not working LOGV("Enable qmp server"); strcpy(argv[param++], "-qmp tcp:0:4444,server"); // disable HPET } // strcpy(argv[param++], "-D"); // strcpy(argv[param++], "/sdcard/limbo/log.txt"); // strcpy(argv[param++], "-win2k-hack"); //use it when installing Windows 2000 to avoid a disk full bug // strcpy(argv[param++], "--trace"); // strcpy(argv[param++], "events=/sdcard/limbo/tmp/events"); // strcpy(argv[param++], "--trace"); // strcpy(argv[param++], "file=/sdcard/limbo/tmp/trace"); // strcpy(argv[param++], "-nographic"); //DO NOT USE // disable graphical output and redirect serial I/Os to console if (enablevnc) { LOGV("Enable VNC server"); strcpy(argv[param++], "-vnc"); if (vnc_allow_external) { strcpy(argv[param++], ":1,password"); //TODO: Allow connections from External //this is still not secure // Use with x509 auth and TLS for encryption } else strcpy(argv[param++], "localhost:1"); // Allow all hosts to connect } else { LOGV("Disabling VNC server, using SDL instead"); //SDL needs explicit keyboard layout strcpy(argv[param++], "-k"); strcpy(argv[param++], "en-us"); } strcpy(argv[param++], "-smp"); strcpy(argv[param], "sockets="); strcat(argv[param], cpu_num_str); strcat(argv[param], ",cores=1"); strcat(argv[param++], ",threads=1"); strcpy(argv[param++], "-M"); strcpy(argv[param++], machine_type_str); //MK TESTING //Not working under User mode //Redirect ports (SSH) // strcpy(argv[param++], "-redir"); // strcpy(argv[param++], "5555::22"); //MK OUT argv[param] = NULL; int argc = params - 1; for (i = 0; i < argc; i++) { LOGV("Arg(%d): %s", i, argv[i]); } LOGV("***************** INIT QEMU ************************"); started = 1; LOGV("Starting VM..."); //LOAD LIB if (handle == NULL) { loadLib(lib_path_str); } if (!handle) { sprintf(res_msg, "Error opening lib: %s :%s", lib_path_str, dlerror()); LOGV(res_msg); return (*env)->NewStringUTF(env, res_msg); } //Set Max AIO Threads typedef void (*setAIOMaxThreads_t)(); dlerror(); setAIOMaxThreads_t setAIOMaxThreads = (setAIOMaxThreads_t) dlsym(handle, "setAIOMaxThreads"); const char *dlsym_error1 = dlerror(); if (dlsym_error1) { LOGV("Cannot load symbol 'setAIOMaxThreads': %s\n", dlsym_error1); // handle = NULL; return (*env)->NewStringUTF(env, res_msg); } LOGV("Attempt to change aiomaxthreads: %d", aiomaxthreads); setAIOMaxThreads(aiomaxthreads); //Set DNS typedef void (*set_dns_addr_str_t)(); dlerror(); set_dns_addr_str_t set_dns_addr_str = (set_dns_addr_str_t) dlsym(handle, "set_dns_addr_str"); const char *dlsym_error2 = dlerror(); if (dlsym_error2) { LOGV("Cannot load symbol 'set_dns_addr_str': %s\n", dlsym_error2); // dlclose(handle); // handle = NULL; return (*env)->NewStringUTF(env, res_msg); } set_dns_addr_str(dns_addr_str); LOGV("Loading symbol qemu_start...\n"); typedef void (*qemu_start_t)(); // reset errors dlerror(); qemu_start_t qemu_start = (qemu_start_t) dlsym(handle, "qemu_start"); const char *dlsym_error = dlerror(); if (dlsym_error) { LOGV("Cannot load symbol 'qemu_start': %s\n", dlsym_error); dlclose(handle); handle = NULL; return (*env)->NewStringUTF(env, res_msg); } qemu_start(argc, argv, NULL); //UNLOAD LIB sprintf(res_msg, "Closing lib: %s", lib_path_str); LOGV(res_msg); dlclose(handle); handle = NULL; (*env)->ReleaseStringUTFChars(env, jcdrom_iso_path, cdrom_iso_path_str); /* Log and return a string of success or error message. * This can be enhanced semantically with codes. */ sprintf(res_msg, "VM has shutdown"); LOGV(res_msg); exit(1); // return (*env)->NewStringUTF(env, res_msg); }