<feed xmlns='http://www.w3.org/2005/Atom'>
<title>threadx.git/test/tx/regression/threadx_block_pool_trace_test.c, branch v6.4.1_cert</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/threadx.git/atom/test/tx/regression/threadx_block_pool_trace_test.c?h=v6.4.1_cert</id>
<link rel='self' href='http://cgit.235523.xyz/threadx.git/atom/test/tx/regression/threadx_block_pool_trace_test.c?h=v6.4.1_cert'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/'/>
<updated>2026-09-15T20:56:14Z</updated>
<entry>
<title>Covered the block pool services' trace inserts and the allocate's trace update</title>
<updated>2026-09-15T20:56:14Z</updated>
<author>
<name>Frédéric Desbiens</name>
<email>frederic.desbiens@eclipse-foundation.org</email>
</author>
<published>2026-09-15T20:56:14Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=e57b1d5bf3ad7137beb7e2af64bc2f7cd2eec786'/>
<id>urn:sha1:e57b1d5bf3ad7137beb7e2af64bc2f7cd2eec786</id>
<content type='text'>
The six in-line trace inserts in the memory block pool services were reached in
one system state only, so each scored one or five of the twelve branch outcomes
the macro carries.

A new regression test walks the six services once per condition the macro
distinguishes: thread context with every event enabled, the block pool trace
event class filtered out, interrupt context through the test ISR dispatch,
initialization context, the state an interrupt presents, and a positioned buffer
wrap with and without a buffer-full notification registered. The forced-state
passes drive the internal entry points, because the error checking shell rejects
a create from an interrupt and a delete from any caller that is not a thread, so
the inserts behind those two cannot be reached through the published ones. No
block pool service reads the system state itself, so the internal entry point
reaches every insert in every state.

A second test drives the allocate service's trace update in place. The service
records its event, remembers the entry and its time stamp, and comes back to
write the address of the block it handed out into that same entry, but only if
the time stamp says no later event has taken the slot. Neither of the two
regions had ever run with tracing enabled over the service, so both the update
and the lines behind it were dead in the report. The test walks the path that
finds a block immediately and the path that suspends until a release hands one
over, and then drives the suspending path again with the trace buffer written
all the way round while the thread is suspended, so the service correctly
declines to update an entry that now belongs to a different event.

Every block pool insert now scores twelve of twelve, and the subsystem is at
278/278 lines and 251/252 branches. The one outcome left is the arm that needs
an event written over the same slot between the insert and the check on the
immediate path, where the whole window is interrupt-locked and contains no other
insert. Merged over the six build configurations: 4309/4339 lines and 4482/4627
branches, up 5 lines and 64 outcomes, with the gates raised to 99.20 and 96.50
to hold them.

Assisted-by: Claude Code (Opus 5) &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
