添加rust重构版本的HPET驱动和tsc驱动,并使用HPET校准tsc频率和cpu总线频率 (#412)

* 添加rust重构版本的HPET驱动和tsc驱动,并使用HPET校准tsc频率和cpu总线频率

* 把hpet.c移动到arch文件夹下
This commit is contained in:
LoGin
2023-10-26 23:08:39 +08:00
committed by GitHub
parent ad1d649edd
commit fbe6becd6d
29 changed files with 946 additions and 391 deletions

View File

@ -59,17 +59,3 @@ struct cpu_core_info_t
};
extern struct cpu_core_info_t cpu_core_info[MAX_CPU_NUM];
/**
* @brief 获取当前cpu核心晶振频率
*
* @return uint32_t 当前cpu核心晶振频率
*/
uint32_t cpu_get_core_crysral_freq();
/**
* @brief 获取处理器的tsc频率单位hz
*
* @return uint64_t
*/
uint64_t cpu_get_tsc_freq();

View File

@ -5,7 +5,7 @@
#pragma once
//引入对bool类型的支持
// 引入对bool类型的支持
#include <stdbool.h>
#include <DragonOS/stdint.h>
#include <common/stddef.h>
@ -13,7 +13,6 @@
#include <common/compiler.h>
#include <common/list.h>
#include <asm/asm.h>
/**
@ -64,7 +63,6 @@ static __always_inline ul ALIGN(const ul addr, const ul _align)
return (ul)((addr + _align - 1) & (~(_align - 1)));
}
void *memset(void *dst, unsigned char C, ul size)
{
@ -189,7 +187,6 @@ void io_out32(unsigned short port, unsigned int value)
__asm__ __volatile__("cld;rep;outsw;mfence;" ::"d"(port), "S"(buffer), "c"(nr) \
: "memory")
/**
* @brief 验证地址空间是否为用户地址空间
*
@ -245,7 +242,6 @@ static inline uint64_t copy_from_user(void *dst, void *src, uint64_t size)
*/
static inline uint64_t copy_to_user(void *dst, void *src, uint64_t size)
{
uint64_t tmp0, tmp1;
if (verify_area((uint64_t)src, size))
return 0;
@ -262,8 +258,8 @@ static inline uint64_t copy_to_user(void *dst, void *src, uint64_t size)
// : "=&c"(size), "=&D"(tmp0), "=&S"(tmp1)
// : "r"(size & 7), "0"(size >> 3), "1"(dst), "2"(src)
// : "memory");
memcpy(dst,src,size);
memcpy(dst, src, size);
return size;
}
@ -285,7 +281,6 @@ static __always_inline void __write8b(uint64_t vaddr, uint64_t value)
{
asm volatile("movq %%rdx, 0(%%rax)" ::"a"(vaddr), "d"(value)
: "memory");
}
/**
@ -299,7 +294,6 @@ static __always_inline void __write4b(uint64_t vaddr, uint32_t value)
{
asm volatile("movl %%edx, 0(%%rax)" ::"a"(vaddr), "d"(value)
: "memory");
}
/**
@ -338,7 +332,7 @@ static __always_inline uint32_t __read4b(uint64_t vaddr)
/**
* @brief 将数据从src搬运到dst并能正确处理地址重叠的问题
*
*
* @param dst 目标地址指针
* @param src 源地址指针
* @param size 大小