Пример #1
0
static int freeze_unfreeze(const char *name, int freeze, const char *lxcpath)
{
	char *cgabspath;
	int ret;

	cgabspath = lxc_cgroup_get_hierarchy_abs_path("freezer", name, lxcpath);
	if (!cgabspath)
		return -1;

	ret = do_unfreeze(cgabspath, freeze, name, lxcpath);
	free(cgabspath);
	return ret;
}
Пример #2
0
static lxc_state_t freezer_state(const char *name, const char *lxcpath)
{
	char *cgabspath = NULL;
	char freezer[MAXPATHLEN];
	char status[MAXPATHLEN];
	FILE *file;
	int ret;

	cgabspath = lxc_cgroup_get_hierarchy_abs_path("freezer", name, lxcpath);
	if (!cgabspath)
		return -1;

	ret = snprintf(freezer, MAXPATHLEN, "%s/freezer.state", cgabspath);
	if (ret < 0 || ret >= MAXPATHLEN)
		goto out;

	process_lock();
	file = fopen(freezer, "r");
	process_unlock();
	if (!file) {
		ret = -1;
		goto out;
	}

	ret = fscanf(file, "%s", status);
	process_lock();
	fclose(file);
	process_unlock();

	if (ret == EOF) {
		SYSERROR("failed to read %s", freezer);
		ret = -1;
		goto out;
	}

	ret = lxc_str2state(status);

out:
	free(cgabspath);
	return ret;
}