summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2023-11-13 16:09:45 +0100
committerAnton Kling <anton@kling.gg>2023-11-13 16:09:45 +0100
commit01c13017bf595935022d31eaaa0349bb60233fee (patch)
tree1139983aaee80cb76270ffa18f13cc1c6a47e087
parent761f57a1b167abeda40c5cc0fce801a4230f2400 (diff)
Kernel: Remove kmalloc_eternal
I would like to be able to free some of those objects but I have not decided upon how that will be done yet. Even if not freeded the added complexity of having two functions does not make the extra bytes saved worth it IMO.
-rw-r--r--kernel/fs/devfs.c2
-rw-r--r--kernel/fs/vfs.c2
-rw-r--r--kernel/kmalloc.c25
-rw-r--r--kernel/kmalloc.h5
-rw-r--r--kernel/socket.c2
5 files changed, 3 insertions, 33 deletions
diff --git a/kernel/fs/devfs.c b/kernel/fs/devfs.c
index 0fd082d..7d880f6 100644
--- a/kernel/fs/devfs.c
+++ b/kernel/fs/devfs.c
@@ -82,7 +82,7 @@ void add_stdout(void) {
}
vfs_inode_t *devfs_mount(void) {
- vfs_inode_t *root = kmalloc_eternal(sizeof(vfs_inode_t));
+ vfs_inode_t *root = kmalloc(sizeof(vfs_inode_t));
root->open = devfs_open;
root->read = devfs_read;
root->write = devfs_write;
diff --git a/kernel/fs/vfs.c b/kernel/fs/vfs.c
index 0c62db8..dece40e 100644
--- a/kernel/fs/vfs.c
+++ b/kernel/fs/vfs.c
@@ -310,7 +310,7 @@ int vfs_ftruncate(int fd, size_t length) {
void vfs_mount(char *path, vfs_inode_t *local_root) {
int len = strlen(path);
- mounts[num_mounts].path = kmalloc_eternal(len + 1);
+ mounts[num_mounts].path = kmalloc(len + 1);
memcpy(mounts[num_mounts].path, path, len);
mounts[num_mounts].path[len] = '\0';
mounts[num_mounts].local_root = local_root;
diff --git a/kernel/kmalloc.c b/kernel/kmalloc.c
index 8a674f5..3871d62 100644
--- a/kernel/kmalloc.c
+++ b/kernel/kmalloc.c
@@ -147,31 +147,6 @@ void *kmalloc(size_t s) {
return rc;
}
-#define HEAP 0x00E00000
-#define PHYS 0x403000
-
-void *latest = NULL;
-u64 left = 0;
-
-void *kmalloc_eternal_physical_align(size_t s, void **physical) {
- void *return_address = ksbrk(s);
- if (physical) {
- if (0 == get_active_pagedirectory())
- *physical =
- (void *)((uintptr_t)return_address - (0xC0000000 + PHYS) + HEAP);
- else
- *physical = (void *)virtual_to_physical(return_address, 0);
- }
- memset(return_address, 0, 0x1000);
- return return_address;
-}
-
-void *kmalloc_eternal_align(size_t s) {
- return kmalloc_eternal_physical_align(s, NULL);
-}
-
-void *kmalloc_eternal(size_t s) { return kmalloc_eternal_align(s); }
-
size_t get_mem_size(void *ptr) {
if (!ptr)
return 0;
diff --git a/kernel/kmalloc.h b/kernel/kmalloc.h
index 6509cb0..94806f3 100644
--- a/kernel/kmalloc.h
+++ b/kernel/kmalloc.h
@@ -6,11 +6,6 @@
void kmalloc_allocate_heap(void);
-void *kmalloc_eternal(size_t size);
-void *kmalloc_eternal_align(size_t size);
-void *kmalloc_eternal_physical(size_t size, void **physical);
-void *kmalloc_eternal_physical_align(size_t size, void **physical);
-
void *kmalloc(size_t s);
void *kmalloc_align(size_t s);
void *krealloc(void *ptr, size_t size);
diff --git a/kernel/socket.c b/kernel/socket.c
index 3f78720..65ba771 100644
--- a/kernel/socket.c
+++ b/kernel/socket.c
@@ -272,7 +272,7 @@ int socket(int domain, int type, int protocol) {
if (!(AF_UNIX == domain || AF_INET == domain))
return -EINVAL;
- SOCKET *new_socket = kmalloc_eternal(sizeof(SOCKET));
+ SOCKET *new_socket = kmalloc(sizeof(SOCKET));
vfs_inode_t *inode = vfs_create_inode(
0 /*inode_num*/, FS_TYPE_UNIX_SOCKET, 0 /*has_data*/, 1 /*can_write*/,
1 /*is_open*/, new_socket /*internal_object*/, 0 /*file_size*/,