Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/hwpmc/hwpmc_logging.c
| Show First 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | |||||
| #include <sys/signalvar.h> | #include <sys/signalvar.h> | ||||
| #include <sys/smp.h> | #include <sys/smp.h> | ||||
| #include <sys/syscallsubr.h> | #include <sys/syscallsubr.h> | ||||
| #include <sys/sysctl.h> | #include <sys/sysctl.h> | ||||
| #include <sys/systm.h> | #include <sys/systm.h> | ||||
| #include <sys/uio.h> | #include <sys/uio.h> | ||||
| #include <sys/unistd.h> | #include <sys/unistd.h> | ||||
| #include <sys/vnode.h> | #include <sys/vnode.h> | ||||
| #include <sys/syslog.h> | |||||
| #if defined(__i386__) || defined(__amd64__) | #if defined(__i386__) || defined(__amd64__) | ||||
| #include <machine/clock.h> | #include <machine/clock.h> | ||||
| #endif | #endif | ||||
| #define curdomain PCPU_GET(domain) | #define curdomain PCPU_GET(domain) | ||||
| /* | /* | ||||
| ▲ Show 20 Lines • Show All 1,162 Lines • ▼ Show 20 Lines | |||||
| */ | */ | ||||
| void | void | ||||
| pmclog_initialize(void) | pmclog_initialize(void) | ||||
| { | { | ||||
| struct pmclog_buffer *plb; | struct pmclog_buffer *plb; | ||||
| int domain, ncpus, total; | int domain, ncpus, total; | ||||
| if (pmclog_buffer_size <= 0 || pmclog_buffer_size > 16*1024) { | if (pmclog_buffer_size <= 0 || pmclog_buffer_size > PMC_LOG_BUFFER_SIZE_MAX) { | ||||
| (void) printf("hwpmc: tunable logbuffersize=%d must be " | log(LOG_WARNING, "hwpmc: logbuffersize=%d must be greater than " | ||||
| "greater than zero and less than or equal to 16MB.\n", | "zero and less than or equal to %d, resetting to %d\n", | ||||
| pmclog_buffer_size); | pmclog_buffer_size, PMC_LOG_BUFFER_SIZE_MAX, PMC_LOG_BUFFER_SIZE); | ||||
| pmclog_buffer_size = PMC_LOG_BUFFER_SIZE; | pmclog_buffer_size = PMC_LOG_BUFFER_SIZE; | ||||
| } | } | ||||
| if (pmc_nlogbuffers_pcpu <= 0) { | if (pmc_nlogbuffers_pcpu <= 0) { | ||||
| (void) printf("hwpmc: tunable nlogbuffers=%d must be greater " | log(LOG_WARNING, "hwpmc: nbuffers_pcpu=%d must be greater than " | ||||
| "than zero.\n", pmc_nlogbuffers_pcpu); | "zero, resetting to %d\n", | ||||
| pmc_nlogbuffers_pcpu, PMC_NLOGBUFFERS_PCPU); | |||||
| pmc_nlogbuffers_pcpu = PMC_NLOGBUFFERS_PCPU; | pmc_nlogbuffers_pcpu = PMC_NLOGBUFFERS_PCPU; | ||||
| } | } | ||||
| if (pmc_nlogbuffers_pcpu*pmclog_buffer_size > 32*1024) { | if (pmc_nlogbuffers_pcpu*pmclog_buffer_size > PMC_NLOGBUFFERS_PCPU_MEM_MAX) { | ||||
| (void) printf("hwpmc: memory allocated pcpu must be less than 32MB (is %dK).\n", | log(LOG_WARNING, "hwpmc: nbuffers_pcpu=%d * logbuffersize=%d " | ||||
| pmc_nlogbuffers_pcpu*pmclog_buffer_size); | "exceeds %dMB per CPU limit, resetting to defaults " | ||||
| "(%d * %d)\n", | |||||
| pmc_nlogbuffers_pcpu, pmclog_buffer_size, | |||||
| PMC_NLOGBUFFERS_PCPU_MEM_MAX / 1024, | |||||
| PMC_NLOGBUFFERS_PCPU, PMC_LOG_BUFFER_SIZE); | |||||
| pmc_nlogbuffers_pcpu = PMC_NLOGBUFFERS_PCPU; | pmc_nlogbuffers_pcpu = PMC_NLOGBUFFERS_PCPU; | ||||
| pmclog_buffer_size = PMC_LOG_BUFFER_SIZE; | pmclog_buffer_size = PMC_LOG_BUFFER_SIZE; | ||||
| } | } | ||||
| for (domain = 0; domain < vm_ndomains; domain++) { | for (domain = 0; domain < vm_ndomains; domain++) { | ||||
| ncpus = pmc_dom_hdrs[domain]->pdbh_ncpus; | ncpus = pmc_dom_hdrs[domain]->pdbh_ncpus; | ||||
| total = ncpus * pmc_nlogbuffers_pcpu; | total = ncpus * pmc_nlogbuffers_pcpu; | ||||
| plb = malloc_domainset(sizeof(struct pmclog_buffer) * total, | plb = malloc_domainset(sizeof(struct pmclog_buffer) * total, | ||||
| Show All 36 Lines | |||||