From 8a3973e46941b6a8c88a49594364a04ee4b1d84e Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Wed, 16 Jul 2025 20:48:35 -0400 Subject: kernel: accnt: Keep track of per-cpu stats Signed-off-by: Ian Moffett --- sys/include/arch/amd64/cpu.h | 4 ++++ sys/include/sys/limits.h | 2 -- sys/include/sys/sched.h | 12 ++++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) (limited to 'sys/include') diff --git a/sys/include/arch/amd64/cpu.h b/sys/include/arch/amd64/cpu.h index a5f09fb..a047cef 100644 --- a/sys/include/arch/amd64/cpu.h +++ b/sys/include/arch/amd64/cpu.h @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -53,6 +54,7 @@ struct cpu_info { size_t lapic_tmr_freq; uint8_t irq_mask; vaddr_t shootdown_va; + struct sched_cpu stat; struct tss_entry *tss; struct proc *curtd; struct spinlock lock; @@ -67,6 +69,8 @@ void cpu_enable_smep(void); void cpu_disable_smep(void); struct cpu_info *cpu_get(uint32_t index); +struct sched_cpu *cpu_get_stat(uint32_t cpu_index); + uint32_t cpu_count(void); void cpu_shootdown_tlb(vaddr_t va); diff --git a/sys/include/sys/limits.h b/sys/include/sys/limits.h index 5b97b68..f6aed9d 100644 --- a/sys/include/sys/limits.h +++ b/sys/include/sys/limits.h @@ -35,7 +35,5 @@ #define SSIZE_MAX 32767 #define ARG_MAX 4096 #define CHAR_BIT 8 -#if defined(_KERNEL) #define CPU_MAX 256 -#endif /* _KERNEL */ #endif /* !_SYS_LIMITS_H_ */ diff --git a/sys/include/sys/sched.h b/sys/include/sys/sched.h index d80483a..abc2718 100644 --- a/sys/include/sys/sched.h +++ b/sys/include/sys/sched.h @@ -32,6 +32,17 @@ #include #include +#include + +/* + * Scheduler CPU information + * + * @nswitch: Number of context switches + * @idle: Number of milliseconds idle + */ +struct sched_cpu { + uint32_t nswitch; +}; /* * Scheduler statistics @@ -44,6 +55,7 @@ struct sched_stat { size_t nproc; uint16_t ncpu; uint32_t quantum_usec; + struct sched_cpu cpus[CPU_MAX]; }; #if defined(_KERNEL) -- cgit v1.2.3