12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /* proximity.c
- * Parse manual proximity config.
- */
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <sys/types.h>
- #include <dirent.h>
- #include <limits.h>
- #include <ctype.h>
- #include "lub/list.h"
- #include "proximity.h"
- #define STR(str) ( str ? str : "" )
- int parse_pxm_config(const char *fname)
- {
- FILE *file;
- char *line = NULL;
- size_t size = 0;
- char *saveptr;
- if (!fname)
- return -1;
- file = fopen(fname, "r");
- if (!file)
- return -1;
- while (!feof(file)) {
- if (getline(&line, &size, file) == 0)
- break;
- printf("%s\n", line);
- /* if (!strstr(line, "cpu"))
- break;
- cpunr = strtoul(&line[3], NULL, 10);
- cpu = cpu_list_search(cpus, cpunr);
- if (!cpu)
- continue;
- rc = sscanf(line, "%*s %llu %llu %llu %llu %llu %llu %llu %llu %llu %llu",
- &l_user, &l_nice, &l_system, &l_idle, &l_iowait,
- &l_irq, &l_softirq, &l_steal, &l_guest, &l_guest_nice);
- if (rc < 2)
- break;
- cpucount++;
- load_all = l_user + l_nice + l_system + l_idle + l_iowait +
- l_irq + l_softirq + l_steal + l_guest + l_guest_nice;
- load_irq = l_irq + l_softirq;
- cpu->old_load = cpu->load;
- if (cpu->old_load_all == 0) {
- cpu->load = 0;
- } else {
- float d_all = (float)(load_all - cpu->old_load_all);
- float d_irq = (float)(load_irq - cpu->old_load_irq);
- cpu->load = d_irq * 100 / d_all;
- }
- cpu->old_load_all = load_all;
- cpu->old_load_irq = load_irq;
- */
- }
- /* Parse "intr" line. Get number of interrupts. */
- #if 0
- strtok_r(line, " ", &saveptr);
- strtok_r(NULL, " ", &saveptr); /* Total number of interrupts */
- for (intr_str = strtok_r(NULL, " ", &saveptr);
- intr_str; intr_str = strtok_r(NULL, " ", &saveptr)) {
- unsigned long long intr = 0;
- char *endptr;
- irq_t *irq;
-
- irq = irq_list_search(irqs, inum);
- inum++;
- if (!irq)
- continue;
- intr = strtoull(intr_str, &endptr, 10);
- if (endptr == intr_str)
- intr = 0;
- if (irq->old_intr == 0)
- irq->intr = 0;
- else
- irq->intr = intr - irq->old_intr;
- irq->old_intr = intr;
- }
- #endif
- fclose(file);
- free(line);
- return 0;
- }
|