Skip to content

Commit 917716a

Browse files
committed
realize paging memory, add kmalloc aligned; todo: realize kmemdump fully
1 parent 1c566f7 commit 917716a

File tree

5 files changed

+48
-0
lines changed

5 files changed

+48
-0
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
<<<<<<< HEAD
12
commit f606112b639b04e51fd6449516d295f348cb1cc7
23
Author: Alexeev Bronislav <[email protected]>
34
Date: Sun Aug 24 22:24:16 2025 +0700
@@ -28,6 +29,8 @@ Date: Sun Aug 24 06:05:27 2025 +0700
2829

2930
feat: realize paging, add page, frame allocator and change kfree, kmalloc, krealloc
3031

32+
=======
33+
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
3134
commit ffe676bbcd462e3e7d7c8bd82ca1683361ba3bf6
3235
Author: Alexeev Bronislav <[email protected]>
3336
Date: Sun Aug 24 04:06:51 2025 +0700

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ INTERRUPT_OBJ = $(BIN_DIR)/kernel/cpu/interrupt.o
2020
<<<<<<< HEAD
2121
<<<<<<< HEAD
2222
<<<<<<< HEAD
23+
<<<<<<< HEAD
2324
PAGING_OBJ = $(BIN_DIR)/bootloader/paging.o
2425
=======
2526
PAGING_OBJ = $(BIN_DIR)/kernel/paging_asm.o
@@ -30,6 +31,9 @@ PAGING_OBJ = $(BIN_DIR)/kernel/paging_asm.o
3031
=======
3132
PAGING_OBJ = $(BIN_DIR)/kernel/paging_asm.o
3233
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
34+
=======
35+
PAGING_OBJ = $(BIN_DIR)/kernel/paging_asm.o
36+
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
3337

3438
C_SOURCES = $(shell find $(SRC_DIR) -name '*.c')
3539
C_OBJS = $(C_SOURCES:$(SRC_DIR)/%.c=$(BIN_DIR)/%.o)

src/kernel/kernel/kernel.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,16 @@ void kmain() {
2525
irq_install();
2626
kprint("IRQ Installed\n");
2727

28+
<<<<<<< HEAD
2829
<<<<<<< HEAD
2930
<<<<<<< HEAD
3031
init_paging();
3132
=======
3233
register_interrupt_handler(14, page_fault_handler);
3334
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
35+
=======
36+
register_interrupt_handler(14, page_fault_handler);
37+
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
3438
=======
3539
register_interrupt_handler(14, page_fault_handler);
3640
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)

src/kernel/kklibc/mem.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,29 +39,38 @@ void heap_init() {
3939
free_blocks->page = NULL;
4040

4141
kprint("Heap initialized at virtual: ");
42+
<<<<<<< HEAD
4243
<<<<<<< HEAD
4344
kprint("Heap initialized at virtual: ");
4445
=======
46+
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
47+
=======
4548
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
4649
char buf[32] = "";
4750
hex_to_ascii(HEAP_VIRTUAL_START, buf);
4851
kprint(buf);
4952
kprint(", physical: ");
5053
hex_to_ascii(heap_physical_start, buf);
54+
<<<<<<< HEAD
5155
<<<<<<< HEAD
5256
hex_to_ascii(HEAP_VIRTUAL_START, buf);
5357
kprint(buf);
5458
kprint(", physical: ");
5559
hex_to_ascii(heap_physical_start, buf);
5660
=======
61+
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
62+
=======
5763
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
5864
kprint(buf);
5965
kprint("\n");
6066
}
6167

6268

69+
<<<<<<< HEAD
6370
<<<<<<< HEAD
6471

72+
=======
73+
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
6574
=======
6675
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
6776
// TODO: Paging is not implemented
@@ -95,6 +104,7 @@ void *kmalloc_a(u32 size) {
95104
}
96105

97106
return virtual_addr;
107+
<<<<<<< HEAD
98108
<<<<<<< HEAD
99109
return get_physical_address(virtualaddr);
100110
}
@@ -127,6 +137,8 @@ void *kmalloc_a(u32 size) {
127137
return virtual_addr;
128138
=======
129139
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
140+
=======
141+
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
130142
}
131143

132144
void *kmalloc(u32 size) {
@@ -176,9 +188,12 @@ void *kmalloc(u32 size) {
176188

177189
current->is_free = 0;
178190
return (void*)((u32)current + sizeof(mem_block_t));
191+
<<<<<<< HEAD
179192
<<<<<<< HEAD
180193
return (void*)((u32)current + sizeof(mem_block_t));
181194
=======
195+
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
196+
=======
182197
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
183198
}
184199
prev = current;
@@ -299,10 +314,13 @@ meminfo_t get_meminfo() {
299314

300315
meminfo.heap_virtual_start = HEAP_VIRTUAL_START;
301316
meminfo.heap_physical_start = heap_physical_start;
317+
<<<<<<< HEAD
302318
<<<<<<< HEAD
303319
meminfo.heap_virtual_start = HEAP_VIRTUAL_START;
304320
meminfo.heap_physical_start = heap_physical_start;
305321
=======
322+
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
323+
=======
306324
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
307325
meminfo.heap_size = HEAP_SIZE;
308326
meminfo.block_size = BLOCK_SIZE;
@@ -317,23 +335,29 @@ meminfo_t get_meminfo() {
317335
meminfo.used_pages = 256; // Примерное значение
318336
meminfo.free_pages = 768; // Примерное значение
319337

338+
<<<<<<< HEAD
320339
<<<<<<< HEAD
321340
// Информация о страницах (заглушка)
322341
meminfo.page_directory_phys = (u32)get_physical_address(get_current_page_directory());
323342
meminfo.total_pages = 1024; // Примерное значение
324343
meminfo.used_pages = 256; // Примерное значение
325344
meminfo.free_pages = 768; // Примерное значение
326345

346+
=======
347+
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
327348
=======
328349
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
329350
return meminfo;
330351
}
331352

332353
// Дамп информации о памяти
333354
<<<<<<< HEAD
355+
<<<<<<< HEAD
334356
// Дамп информации о памяти
335357
=======
336358
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
359+
=======
360+
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
337361
void kmemdump() {
338362
meminfo_t info = get_meminfo();
339363
mem_block_t *current = info.free_blocks;
@@ -343,35 +367,44 @@ void kmemdump() {
343367
info.heap_virtual_start + info.heap_size, info.heap_size);
344368
kprintf("Heap: physical %x - %x\n", info.heap_physical_start,
345369
info.heap_physical_start + info.heap_size);
370+
<<<<<<< HEAD
346371
<<<<<<< HEAD
347372
kprintf("Heap: virtual %x - %x (%d bytes)\n", info.heap_virtual_start,
348373
info.heap_virtual_start + info.heap_size, info.heap_size);
349374
kprintf("Heap: physical %x - %x\n", info.heap_physical_start,
350375
info.heap_physical_start + info.heap_size);
351376
=======
377+
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
378+
=======
352379
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
353380
kprintf("Block size: %d bytes\n", info.block_size);
354381
kprintf("Total: USED=%d bytes, FREE=%d bytes, in %d blocks\n",
355382
info.total_used, info.total_free, info.block_count);
356383
kprintf("Pages: TOTAL=%d, USED=%d, FREE=%d\n\n",
357384
info.total_pages, info.used_pages, info.free_pages);
385+
<<<<<<< HEAD
358386
<<<<<<< HEAD
359387
kprintf("Total: USED=%d bytes, FREE=%d bytes, in %d blocks\n",
360388
info.total_used, info.total_free, info.block_count);
361389
kprintf("Pages: TOTAL=%d, USED=%d, FREE=%d\n\n",
362390
info.total_pages, info.used_pages, info.free_pages);
363391
=======
392+
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
393+
=======
364394
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
365395

366396
while (current) {
367397
kprintf("Block %d: virt=%x, phys=%x, Size=%d, %s\n", counter++,
368398
(u32)current, (u32)get_physical_address(current),
369399
current->size, current->is_free ? "FREE" : "USED");
400+
<<<<<<< HEAD
370401
<<<<<<< HEAD
371402
kprintf("Block %d: virt=%x, phys=%x, Size=%d, %s\n", counter++,
372403
(u32)current, (u32)get_physical_address(current),
373404
current->size, current->is_free ? "FREE" : "USED");
374405
=======
406+
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
407+
=======
375408
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
376409
current = current->next;
377410
}

src/kernel/kklibc/mem.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,17 @@ void *get_physaddr(void *virtualaddr);
5252
meminfo_t get_meminfo();
5353
<<<<<<< HEAD
5454
<<<<<<< HEAD
55+
<<<<<<< HEAD
5556

5657
=======
5758
void get_freememaddr();
5859
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
5960
=======
6061
void get_freememaddr();
6162
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
63+
=======
64+
void get_freememaddr();
65+
>>>>>>> 3fe2ead (realize paging memory, add kmalloc aligned; todo: realize kmemdump fully)
6266
void heap_init();
6367
void* kmalloc(u32 size);
6468
void kfree(void* ptr);

0 commit comments

Comments
 (0)