void get_installed_packages (void) { char *cmd; FILE *f; char buf[1000], *p; struct pkg *pp; cmd = "dpkg-query --show -f='${Package}\t${Version}\n'"; if ((f = popen (cmd, "r")) == NULL) { printf ("can't run %s\n", cmd); exit (1); } while (fgets (buf, sizeof buf, f) != NULL) { p = buf; while (*p && !isspace (*p)) p++; *p = 0; pp = find_pkg (buf, 1); pp->installed = 1; } pclose (f); }
void mark_packages_wanted (char **names, int nnames) { int idx; struct pkg *pp; for (idx = 0; idx < nnames; idx++) { pp = find_pkg (names[idx], 1); pp->wanted = 1; } }
void cpu_manager::register_lp(const prl::affinity_mask& affinity_mask, const apic& apic) { // register processor package topology_package* pkg = find_pkg(apic.pkg); if (pkg == NULL) m_pkgs.push_back(pkg = mp_allocator->make_new<topology_package>(affinity_mask, apic.pkg, m_pkgs.size())); // register processor core topology_core* core = find_core(apic.core); if (core == NULL) m_cores.push_back(core = mp_allocator->make_new<topology_core>(affinity_mask, apic.core, m_cores.size())); // register logical processor topology_smt* smt = find_smt(apic.smt); if (smt == NULL) m_smts.push_back(smt = mp_allocator->make_new<topology_smt>(affinity_mask, apic.smt, m_smts.size())); // propagate affinity mask through layers pkg->add_affinity_mask(affinity_mask); core->add_affinity_mask(affinity_mask); // construct hierarchy //TODO: add }