コード例 #1
0
ファイル: shd-engine.c プロジェクト: anupam-das/shadow
Engine* engine_new(Configuration* config) {
	MAGIC_ASSERT(config);

	/* Don't do anything in this function that will cause a log message. The
	 * global engine is still NULL since we are creating it now, and logging
	 * here will cause an assertion error.
	 */

	Engine* engine = g_new0(Engine, 1);
	MAGIC_INIT(engine);

	engine->config = config;
	engine->random = random_new(config->randomSeed);
	engine->runTimer = g_timer_new();

	/* initialize the singleton-per-thread worker class */
	engine->workerKey.index = 0;
	engine->preloadKey.index = 0;

	/* holds all events if single-threaded, and non-node events otherwise. */
	engine->masterEventQueue =
			asyncpriorityqueue_new((GCompareDataFunc)shadowevent_compare, NULL,
			(GDestroyNotify)shadowevent_free);
	engine->workersIdle = g_cond_new();
	engine->engineIdle = g_mutex_new();

	engine->registry = registry_new();
	registry_register(engine->registry, SOFTWARE, NULL, software_free);
	registry_register(engine->registry, CDFS, NULL, cdf_free);
	registry_register(engine->registry, PLUGINPATHS, g_free, g_free);

	engine->minTimeJump = config->minRunAhead * SIMTIME_ONE_MILLISECOND;

	engine->internet = internetwork_new();

	engine->lock = g_mutex_new();

	/* get the raw speed of the experiment machine */
	gchar* contents = NULL;
	gsize length = 0;
	GError* error = NULL;
	if(!g_file_get_contents(CONFIG_CPU_MAX_FREQ_FILE, &contents, &length, &error)) {
		engine->rawFrequencyKHz = 0;
	} else {
		engine->rawFrequencyKHz = (guint)atoi(contents);
	}

	return engine;
}
コード例 #2
0
ファイル: ui.c プロジェクト: automata/imgflo
gboolean
ui_connection_try_register(UiConnection *self) {
    if (self->registry->info->user_id) {
        return registry_register(self->registry);
    }
    return FALSE;
}
コード例 #3
0
ファイル: ui.c プロジェクト: imgflo/imgflo
gboolean
ui_connection_try_register(UiConnection *self) {
    if (self->registry->info->user_id) {
        gboolean success = registry_register(self->registry);
        if (success) {
            registry_start_pinging(self->registry);
        }
        return success;
    }
    return FALSE;
}