kernel: add function to query CPU clock cycle count

This commit is contained in:
2023-04-22 21:07:34 +01:00
parent a8a6ff123e
commit e7fe5a8f8e
5 changed files with 23 additions and 0 deletions

View File

@@ -38,3 +38,13 @@ wrmsr:
wrmsr
ret
.global get_cycles
.type get_cycles, @function
get_cycles:
rdtsc
shl $32, %rdx
orq %rdx, %rax
ret

View File

@@ -35,4 +35,7 @@ void write_once(volatile T *ptr, T value)
#undef __aligned
#define __aligned(x) __attribute__((__aligned__(x)))
#undef __weak
#define __weak __attribute__((__weak__))
#endif

View File

@@ -1,7 +1,9 @@
#ifndef SOCKS_CPU_H_
#define SOCKS_CPU_H_
#include <socks/types.h>
#include <socks/machine/cpu.h>
#include <stdint.h>
#include <socks/sched.h>
#ifdef __cplusplus
@@ -33,6 +35,8 @@ extern void put_cpu(struct cpu_data *cpu);
extern void cpu_set_available(unsigned int cpu_id);
extern void cpu_set_online(unsigned int cpu_id);
extern cycles_t get_cycles(void);
#define irq_enable() ml_int_enable()
#define irq_disable() ml_int_disable()

View File

@@ -4,5 +4,6 @@
#include <stdint.h>
typedef uintptr_t phys_addr_t;
typedef uint64_t cycles_t;
#endif

View File

@@ -69,3 +69,8 @@ unsigned int cpu_get_highest_available(void)
{
return bitmap_highest_set(cpu_available, CPU_MAX);
}
cycles_t __weak get_cycles(void)
{
return 0;
}