--- title: "Musl, July 20, 2022" tags: unikraft, musl datetime: 2022-07-20T10:00:00+02:00 location: Online, Discord (https://bit.ly/UnikraftDiscord), the `#monkey-business` voice channel teams: - musl participants: - TODO --- ## :dart: Agenda - `clone` updates - Testing updates - Next updates ## :closed_book: Discussions DA: `libs` calls `set_thread_are` which calls `arch_prctl` that sets `fs` to the thread data structure you allocate to Musl. DA: The return value of `pthread_self` returns a different value in `real_main()` in the initial thread. DA: We have different values for `uktlsp` and `tlsp`. DA: If you want to use the `uktslp` for all threads, the function TODO must be called. SK: Yes, that function needs to be called by all threads, including the init thread. DA: There is another problem. `uksched` should not allocate another TLS pointer. `uksched` should reuse the `tlps` and make `uktlsp` have the same value. SK: It's incorrect that Musl says the TLS is only 24 bytes. Maybe it's only looking at some linker symbols. SK: If new is the same as `_tls_end` then the next 8 bytes are reserved. SK: You could have some padding between `_tls_start` and `_tls_end`. DA: There may be some environment variables. SK: Since we are not a Linux ELF programs, we don't need this. DA/SK: We should use `__libc_start_main` and then we need to patch the function to provide the correct size. SK: We have two things. Use the information from `ukarch_tls.h`. You can call call `uk_arch_tls_area_copy` or you patch Musl to use our function. ## :wrench: TODOs and Decisions TODO