diff --git a/kernel/common/printk.c b/kernel/common/printk.c index 3607e361..9567de52 100644 --- a/kernel/common/printk.c +++ b/kernel/common/printk.c @@ -33,7 +33,7 @@ int init_printk(const int char_size_x, const int char_size_y) pos.max_y = calculate_max_charNum(pos.height, char_size_y); // @todo:将来需要将帧缓冲区物理地址填写到这个地址的页表项中 - pos.FB_address = 0xa00000; + pos.FB_address = (unsigned int*)0xa00000; pos.FB_length = pos.width * pos.height; pos.x = 0; diff --git a/kernel/driver/multiboot2/multiboot2.c b/kernel/driver/multiboot2/multiboot2.c index a9290a20..1822c8d1 100644 --- a/kernel/driver/multiboot2/multiboot2.c +++ b/kernel/driver/multiboot2/multiboot2.c @@ -17,8 +17,8 @@ bool multiboot2_init(void) return true; } -void multiboot2_iter(bool (*_fun)(const struct iter_data_t *, void *, int *), - void *data, int *count) +void multiboot2_iter(bool (*_fun)(const struct iter_data_t *, void *, unsigned int *), + void *data, unsigned int *count) { uintptr_t addr = boot_info_addr; // 下一字节开始为 tag 信息 @@ -52,20 +52,21 @@ void multiboot2_iter(bool (*_fun)(const struct iter_data_t *, void *, int *), * @return true * @return false */ -bool multiboot2_get_memory(const struct iter_data_t *_iter_data, void *data, int *count) +bool multiboot2_get_memory(const struct iter_data_t *_iter_data, void *data, unsigned int *count) { if (_iter_data->type != MULTIBOOT_TAG_TYPE_MMAP) return false; struct multiboot_mmap_entry_t *resource = (struct multiboot_mmap_entry_t *)data; struct multiboot_mmap_entry_t *mmap = ((struct multiboot_tag_mmap_t *)_iter_data)->entries; - *count = (uint8_t *)_iter_data + _iter_data->size; + *count = 0; for (; (uint8_t *)mmap < (uint8_t *)_iter_data + _iter_data->size; mmap = (struct multiboot_mmap_entry_t *)((uint8_t *)mmap + ((struct multiboot_tag_mmap_t *)_iter_data)->entry_size)) { *resource = *mmap; // 将指针进行增加 resource = (struct multiboot_mmap_entry_t *)((uint8_t *)resource + ((struct multiboot_tag_mmap_t *)_iter_data)->entry_size); + ++(*count); } return true; } @@ -76,7 +77,7 @@ bool multiboot2_get_memory(const struct iter_data_t *_iter_data, void *data, int * @param _iter_data 要被迭代的信息的结构体 * @param _data 返回信息的结构体指针 */ -bool multiboot2_get_VBE_info(const struct iter_data_t *_iter_data, void *data, int *reserved) +bool multiboot2_get_VBE_info(const struct iter_data_t *_iter_data, void *data, unsigned int *reserved) { if (_iter_data->type != MULTIBOOT_TAG_TYPE_VBE) @@ -91,7 +92,7 @@ bool multiboot2_get_VBE_info(const struct iter_data_t *_iter_data, void *data, i * @param _iter_data 要被迭代的信息的结构体 * @param _data 返回信息的结构体指针 */ -bool multiboot2_get_Framebuffer_info(const struct iter_data_t *_iter_data, void *data, int *reserved) +bool multiboot2_get_Framebuffer_info(const struct iter_data_t *_iter_data, void *data, unsigned int *reserved) { if(_iter_data->type !=MULTIBOOT_TAG_TYPE_FRAMEBUFFER) return false; diff --git a/kernel/driver/multiboot2/multiboot2.h b/kernel/driver/multiboot2/multiboot2.h index 0b8cf556..c5e385a2 100644 --- a/kernel/driver/multiboot2/multiboot2.h +++ b/kernel/driver/multiboot2/multiboot2.h @@ -419,8 +419,8 @@ static bool multiboot2_init(void); * @param _fun 迭代操作 * @param _data 数据 */ -void multiboot2_iter(bool (*_fun)(const struct iter_data_t *, void *, int *), - void *_data, int *count); +void multiboot2_iter(bool (*_fun)(const struct iter_data_t *, void *, unsigned int *), + void *_data, unsigned int *count); /** * @brief 获取multiboot2协议提供的内存区域信息 @@ -431,7 +431,7 @@ void multiboot2_iter(bool (*_fun)(const struct iter_data_t *, void *, int *), * @return true * @return false */ -bool multiboot2_get_memory(const struct iter_data_t *_iter_data, void *_data, int *count); +bool multiboot2_get_memory(const struct iter_data_t *_iter_data, void *_data, unsigned int *count); /** * @brief 获取VBE信息 @@ -439,7 +439,7 @@ bool multiboot2_get_memory(const struct iter_data_t *_iter_data, void *_data, in * @param _iter_data 要被迭代的信息的结构体 * @param _data 返回信息的结构体指针 */ -bool multiboot2_get_VBE_info(const struct iter_data_t *_iter_data, void *_data, int *reserved); +bool multiboot2_get_VBE_info(const struct iter_data_t *_iter_data, void *_data, unsigned int *reserved); /** * @brief 获取帧缓冲区信息 @@ -447,4 +447,4 @@ bool multiboot2_get_VBE_info(const struct iter_data_t *_iter_data, void *_data, * @param _iter_data 要被迭代的信息的结构体 * @param _data 返回信息的结构体指针 */ -bool multiboot2_get_Framebuffer_info(const struct iter_data_t *_iter_data, void *_data, int *reserved); \ No newline at end of file +bool multiboot2_get_Framebuffer_info(const struct iter_data_t *_iter_data, void *_data, unsigned int *reserved); \ No newline at end of file diff --git a/kernel/main.c b/kernel/main.c index d7fd7417..988b83d3 100644 --- a/kernel/main.c +++ b/kernel/main.c @@ -85,8 +85,6 @@ void system_initialize() // 先初始化系统调用模块 syscall_init(); - while(1); - // 再初始化进程模块。顺序不能调转 process_init(); }