aboutsummaryrefslogtreecommitdiff
path: root/src/kern/stdlibrepl.c
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2020-11-28 14:46:32 -0700
committerJosh Rahm <joshuarahm@gmail.com>2020-11-28 14:46:32 -0700
commit0ed233b879675929559fb413dd7e018d5aee26c3 (patch)
tree554f653ee0f29cec9774d704a8e39cd9beb9310e /src/kern/stdlibrepl.c
parent4b8b2de19ed10c84d7a298c05907a1471bdf7077 (diff)
downloadstm32l4-0ed233b879675929559fb413dd7e018d5aee26c3.tar.gz
stm32l4-0ed233b879675929559fb413dd7e018d5aee26c3.tar.bz2
stm32l4-0ed233b879675929559fb413dd7e018d5aee26c3.zip
Fix kalloc bug.
Bitfields are officially stupid. Bizzarre behavior was found in how the bitfields integers were overflowing and causing other members to change value, causing really screwy behavior. In addition, with the discovery of 48k being available to the heap, a 12-bit value was no longer sufficient to define the size. I rewrote parts of the kalloc code to allow a generic size for the kalloc header because now it'll require 2 words per block allocated, and who knows what size the header will be on different platforms with more memory. Unfortunately, the second word of the header consists only of the "used" bool. Because I wish to keep alignmennt with 32-bit words, 31 bits are "wasted." However, these bits are used as a canary value to detect heap corruption, so they're not completely wasted. Also, testing was broken since adding the huge amount of platform dependent code for doing system calls. These dependent parts were put under a macro guard so they don't interfere with the x86 testing.
Diffstat (limited to 'src/kern/stdlibrepl.c')
0 files changed, 0 insertions, 0 deletions