int mpssconfig_update_pm(char *name, int cpufreq, int corec6, int pc3, int pc6) { struct mic_info *miclist; struct mic_info *mic; struct mpss_env menv; int err = 0; if (mpssenv_init(&menv)) return CONFIG_ERROR_ENV; if ((miclist = mpss_get_miclist(&menv, NULL)) == NULL) return CONFIG_ERROR_EXIST; if ((mic = mpss_find_micname_inlist(miclist, name)) == NULL) { err = CONFIG_ERROR_EXIST; goto free_and_ret; } if (mpss_update_config(&menv, mic->config.name, "PowerManagement", NULL, "PowerManagement \"cpufreq_%s;corec6_%s;pc3_%s;pc6_%s\"\n", onoff(cpufreq), onoff(corec6), onoff(pc3), onoff(pc6))) err = CONFIG_ERROR_WRITE; free_and_ret: mpss_free_miclist(miclist); return err; }
void set_ramfsroot(struct mic_info *mic, int type, char *target) { char targetname[PATH_MAX]; mic->config.rootdev.type = type; if (target == NULL) { snprintf(targetname, PATH_MAX, "%s/%s.image.gz", mpssenv.vardir, mic->name); mpssut_realloc_fill(&mic->config.rootdev.target, targetname); } else { mpssut_realloc_fill(&mic->config.rootdev.target, target); } display(PFS, "%s: Update RootDevice in %s\n", mic->name, mic->config.name); mpss_update_config(&mpssenv, mic->config.name, NULL, descriptor, "%s %s %s\n\n", "RootDevice", fstypes[type], mic->config.rootdev.target); }
// TODO: Need to add actual NFS configuration back into this. Taken out because it was broken. void set_rootdev(struct mic_info *mic) { char *descriptor = "# Root device for MIC card"; char value[1024]; switch (mic->config.rootdev.type) { case ROOT_TYPE_RAMFS: display(PINFO, "%s: RootDevice RamFS %s\n", mic->name, mic->config.rootdev.target); return; case ROOT_TYPE_STATICRAMFS: display(PINFO, "%s: RootDevice StaticRamFS %s\n", mic->name, mic->config.rootdev.target); return; case ROOT_TYPE_NFS: case ROOT_TYPE_SPLITNFS: display(PINFO, "%s: RootDevice NFS %s: Ensure export is available\n", mic->name, mic->config.rootdev.target); return; case ROOT_TYPE_PFS: display(PINFO, "%s: RootDevice Persistent FS %s\n", mic->name, mic->config.rootdev.target); return; default: mic->config.rootdev.type = ROOT_TYPE_RAMFS; snprintf(value, 1024, "%s/%s.image.gz", mpssenv.vardir, mic->name); mic->config.rootdev.target = mpssut_alloc_fill(value); display(PFS, "%s: Update RootDevice in %s\n", mic->name, mic->config.name); mpss_update_config(&mpssenv, mic->config.name, NULL, descriptor, "%s %s %s\n\n", "RootDevice", "Ramfs", value); display(PINFO, "%s: RootDevice RAMFS %s\n", mic->name, value); break; } return; }
void set_nfsroot(struct mic_info *mic, int type, char *target, char *usr, char *server, int create) { char tmptarget[PATH_MAX]; char tmpusr[PATH_MAX]; char tmpdir[PATH_MAX]; char *nfsserver; char *nfsdir; char *usrserver; char *usrdir; struct stat sbuf; char *nfs_opt = NULL; if (target == NULL) { snprintf(tmptarget, PATH_MAX - 1, "%s/%s.export", mpssenv.vardir, mic->name); target = tmptarget; } if (fill_nfsinfo(mic, type, target, server, &nfsserver, &nfsdir)) return; snprintf(tmpdir, PATH_MAX, "%s:%s", nfsserver, nfsdir); mic->config.rootdev.target = mpssut_alloc_fill(tmpdir); mic->config.rootdev.nfsusr = NULL; if (type == ROOT_TYPE_SPLITNFS) { if (usr == NULL) { snprintf(tmpusr, PATH_MAX - 1, "%s/usr.export", mpssenv.vardir); usr = tmpusr; } if (fill_nfsinfo(mic, type, usr, server, &usrserver, &usrdir)) return; snprintf(tmpdir, PATH_MAX, "%s:%s", usrserver, usrdir); mpssut_realloc_fill(&mic->config.rootdev.nfsusr, tmpdir); mpssut_filename(&mpssenv, NULL, tmpdir, PATH_MAX, "%s", mic->config.filesrc.mic.dir); fstab_add(mic->name, tmpdir, usrdir, "/usr", nfsserver, nfs_opt); display(PFS, "%s: Update RootDevice in %s\n", mic->name, mic->config.name); mpss_update_config(&mpssenv, mic->config.name, NULL, descriptor, "%s %s %s %s\n\n", "RootDevice", fstypes[type], mic->config.rootdev.target, mic->config.rootdev.nfsusr); } else { display(PFS, "%s: Update RootDevice in %s\n", mic->name, mic->config.name); mpss_update_config(&mpssenv, mic->config.name, NULL, descriptor, "%s %s %s\n\n", "RootDevice", fstypes[type], mic->config.rootdev.target); } if (!create) return; if (mpssut_filename(&mpssenv, NULL, tmpdir, PATH_MAX, "%s", nfsdir)) display(PINFO, "%s: Updating existing directory %s: %s\n", mic->name, nfsdir, strerror(errno)); mpssut_mktree(&mpssenv, nfsdir, 0, 0, 0755); mpssfs_gen_nfsdir(&mpssenv, mic, FALSE, &mpssperr); mpss_print_elist(&mpssperr, PINFO, display); mpss_clear_elist(&mpssperr); display(PFS, "%s: Created NFS dir %s\n", mic->name, nfsdir); if ((type != ROOT_TYPE_SPLITNFS) || (stat(usrdir, &sbuf) == 0)) return; display(PINFO, "%s: Common /usr does not exist - creating %s\n", mic->name, usrdir); if (mpssut_filename(&mpssenv, NULL, tmpdir, PATH_MAX, "%s", usrdir)) display(PWARN, "%s: Updating existing directory %s: %s\n", mic->name, usrdir, strerror(errno)); mpssut_mktree(&mpssenv, usrdir, 0, 0, 0755); mpssfs_gen_nfsdir(&mpssenv, mic, TRUE, &mpssperr); mpss_print_elist(&mpssperr, PINFO, display); mpss_clear_elist(&mpssperr); display(PFS, "%s: Created NFS /usr dir %s\n", mic->name, usrdir); }