OSDev.org https://forum.osdev.org/ |
|
Is it a good idea to export some libc functions from kernel? https://forum.osdev.org/viewtopic.php?f=1&t=33375 |
Page 1 of 1 |
Author: | technix [ Sat Dec 15, 2018 1:55 am ] |
Post subject: | Is it a good idea to export some libc functions from kernel? |
What I mean here are simple, "pure" libc functions commonly used in both the kernel and user space, mostly functions in <ctype.h>, <math.h>, most of <string.h> and some <stdio.h> functions like isalpha(3), sin(3), memset(3) and snprintf(3). These functions does not differ from kernel to userland. If in-kernel versions are exported, calling them is not a syscall, instead that would be placed in a page that can be executed from both kernel space and user space and called like a normal library call. The in-kernel versions would be weak exported as part of userland libc if it is doable. This will reduce memory usage as libc proper contains only userland-specific code, while the kernel carries of those pure libc code. |
Author: | Octocontrabass [ Sat Dec 15, 2018 7:22 am ] |
Post subject: | Re: Is it a good idea to export some libc functions from ker |
It's already pretty common for userland shared libraries to share their read-only pages between users, so what you're describing is extending this mechanism to include the kernel. If your target is a system with extremely limited memory, it may be worth the extra effort, but otherwise there's not much to gain. It also opens your kernel up to cache side-channel attacks, if you're worried about that sort of thing. (Of course, cache side-channel attacks are also possible between users that share pages.) |
Author: | technix [ Sat Dec 15, 2018 9:25 am ] |
Post subject: | Re: Is it a good idea to export some libc functions from ker |
Octocontrabass wrote: It's already pretty common for userland shared libraries to share their read-only pages between users, so what you're describing is extending this mechanism to include the kernel. If your target is a system with extremely limited memory, it may be worth the extra effort, but otherwise there's not much to gain. It also opens your kernel up to cache side-channel attacks, if you're worried about that sort of thing. (Of course, cache side-channel attacks are also possible between users that share pages.) If I am implementing this, how should I structure the targets? Something like this:
|
Author: | no92 [ Sat Dec 15, 2018 9:27 am ] |
Post subject: | Re: Is it a good idea to export some libc functions from ker |
Could you please explain about how the pure libc functions you are talking about require a syscall to begin with? |
Author: | technix [ Sat Dec 15, 2018 9:51 am ] |
Post subject: | Re: Is it a good idea to export some libc functions from ker |
no92 wrote: Could you please explain about how the pure libc functions you are talking about require a syscall to begin with? They don't requre a syscall. Instead the booted kernel has them in a location where both kernel-mode and user-mode code can read and execute directly. This way the same piece of code can be used by the kernel, drivers and applications without appearing in multiple locations, saving a lot of memory space. |
Page 1 of 1 | All times are UTC - 6 hours |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |