I'm kind of confused about what sort of functions are not allowed in a spin lock's critical section.
In particular I'm confused about reentrant functions. I thought that all reentrant functions are unsafe to use in a spin lock's critical section, but it appears that functions like kfree and memcpy are ok to use.
So how do we know what functions are ok or not ok? I generally think anything that might block is unsafe, but don't all reentrant functions have the capacity/potential to block?
Also what is the role and relationship of the interrupt handler to spin locks?