Hacker News new | ask | show | jobs
by egberts 1765 days ago
Because a kernel is not a user-land?
1 comments

I agree with parent that unit testing privileged bare metal code is not always possible, at least not without spending 10x-100x dev time on writing tests.

Example: anything that directly accesses MMU or caches.

On the contrary, simulating MMU or caches are trivial. You can create a memory subsystem mock in a few hours.

IO, assembly and interrupts are much harder.

How would you create a mock object for something that modifies the memory layout of the unit test while it is running?
> How would you create a mock object for something that modifies the memory layout of the unit test while it is running?

There's two ways I can interpret "the unit test".

1) "How would you create a mock object for modifying the memory layout of the code being tested?" That's just a routine that shuffles around some bytes. Or marks parts of the address space to fault so it can simulate the contents.

2) "How would you create a mock object for modifying the memory layout of the code performing the test?" That wouldn't be a test. The code performing the test isn't inside its own simulation.

You create your mmap's on init.

The MMU is just a simple 3way array lookup, as a Unicode table.

Unicode?