Age | Commit message (Collapse) | Author |
|
This is not the sort of thing that should go anywhere near production
code, so it's on a dangling branch. I may rebase it from time to time.
|
|
|
|
|
|
This can take long enough (several minutes for h=10) that we do it in a
background task, which is then converted to an RPC dispatch task.
Also add a very limited form of free(), to free the topmost allocation in
the sdram "heap". I don't want to deal with real heap management, but I do
want to be able to recover memory upon deleting a hashsig key, if it's
easy to do so.
|
|
|
|
|
|
MGMT is the default UART, and no one should have to explicitly refer to
the UART unless they need USER (hsm.c:hal_serial_send_char).
The default UART is now exposed in the header file, so that the
default-using functions can be macros, which saves a few bytes in code
space, and a few microseconds in function call overhead.
|
|
|
|
|
|
|
|
already a user-callback mechanism with HAL_SYSTICK_IRQHandler() and HAL_SYSTICK_Callback().
|
|
subject to the same forces that made it a good idea in the first place.
commit 2b6b9f8
Change RPC UART to have a high-priority thread monitoring a large(ish) DMA
buffer, because we've observed out-of-order receives under load.
|
|
|
|
Clean up Makefiles and initialization code.
|
|
Required minor manual intervention to resolve merge issues git had no
way of understanding: git is clever, but not quite clever enough to
understand that a commit in branch had removed the entire RTOS that a
commit in the other branch was using. No big deal, just a couple of
osDelay() calls needing conversion to HAL_Delay() or task_delay().
|
|
|
|
There are no priorities and no preemption, so tasks run in a round-robin
fashion, and explicitly yield control.
|
|
|
|
|
|
buffer, because we've observed out-of-order receives under load.
|
|
If hal_rpc_server_dispatch() returns an XDR decode error because the
request packet was too short, don't call Error_Handler() and kill the
dispatch thread, just drop the request.
Add more ibuf_queue entries, but don't panic and kill the dispatch thread
if we can't get one, just drop the incoming character (which will lead to
an XDR decode error if/when we finally get an ibuf).
|
|
|
|
Drag in UART-related changes from master.
|
|
|
|
receive buffer with half-complete callbacks, and raise the dma priority.
|
|
(dropped characters, improper handoff of message buffers).
Fixed by
a) changing the uart receiver from interrupt to DMA mode, and
b) replacing the dispatch mutex and rpc semaphore with a mail queue
(memory pool + message queue).
|
|
|
|
|
|
Also, if the UART receive callback fails to re-enable receive (because
dispatch_thread is in the middle of transmitting a response), signal
dispatch_thread to re-enable receive after it's done.
|
|
|
|
|
|
client handle in all responses.
|
|
|
|
Also, it turns out the linker wants to include initializers for sdram
variables in the .elf and .bin files, even though it should handle it like
bss. So now we manage sdram directly with a pseudo-malloc.
|
|
Also rearchitect the way we handle RPC requests - have a bunch of waiting
dispatch threads rather than continually creating and deleting threads.
|
|
|