Update to the internal MicroBitDisplay::waitForFreeDisplay() method to ensure
that fibers queued waiting for access to the display always re-contest for
access, thereby avoiding potnetial race conditions.
Updated parameters of this internal method to pass the event being processed
by value, rather than by reference. This is important for applications using
the MESSAGE_BUS_CONCURRENT_EVENTS concurrency mode (JavaScript semantics) to
ensure that any multiple event handlers registered for the same event maintain
a persistent copy of that event on the relevant fiber stack.
- First character of string is now printed on next frame update, rather than
waiting for an inter-character gap
- No unecessary delay after the final character is printed.
These changes make the print() semantics align with the image animate()
semantics.
- new CONFIG option now allows the user to choose between ordered, serial
processing of event handlers and parallel execution of events (JS
semantics) OR parallel processing of event handlers and serial execution of
events (legacy mciro:bit semantics)
- Introduciton of a MicroBitLock primitive for mutual exclusion
- Remove FiberTable structure
- Remove CONFIG options and mappings relating to table size
- Add new list linkage to Fiber structure to maintain list of all Fibers
- Replace get_fiber_table() with get_fiber_list()
- Add new CONFIG option to enable per-fiber meta data (default: disabled)
- Add (void *) pointer to Fiber struct when CONFIG option enabled
- Add Yotta CONFIG glue
- Refactor fork-on-block handling into a unified function
- Align validation semantics of both flavours of invoke() function
- Create a new FiberTable structure, that record all active fibers
- Update fiber creation/deletion code to maintain the table
- Add a utility function to allow read access to the table
- Introduce a CONFIG option to define the initial FiberTable size
Update to the internal MicroBitDisplay::waitForFreeDisplay() method to ensure
that fibers queued waiting for access to the display always re-contest for
access, thereby avoiding potnetial race conditions.
Updated parameters of this internal method to pass the event being processed
by value, rather than by reference. This is important for applications using
the MESSAGE_BUS_CONCURRENT_EVENTS concurrency mode (JavaScript semantics) to
ensure that any multiple event handlers registered for the same event maintain
a persistent copy of that event on the relevant fiber stack.
Align fork-on-block implementation of fiber_wake_on_event() with that of fiber_sleep() and MicroBitLock::wait().
This patch has no impact on external behaviour, but introduces a consistent
deisgn pattern for fork-on-block handling within the scheduler.
- First character of string is now printed on next frame update, rather than
waiting for an inter-character gap
- No unecessary delay after the final character is printed.
These changes make the print() semantics align with the image animate()
semantics.
The heap printing in MicrobitHeapAllocator is really useful for
gauging how much memory is free at various points in the program.
Specifically, by calling this after the uBit object is created we
can start to measure a high-water-mark for RAM and track it over
releases, etc
- new CONFIG option now allows the user to choose between ordered, serial
processing of event handlers and parallel execution of events (JS
semantics) OR parallel processing of event handlers and serial execution of
events (legacy mciro:bit semantics)
- Introduciton of a MicroBitLock primitive for mutual exclusion