June 20 2009: san_engine revisions
This is a summary of the changes to the san_engine code since the May 26
release. The code is not under revision control, but it is usable by the
Many of the changes were made to simplify debugging. Stress tests had revealed
a couple of very obscure bugs. It turned out that the engine code was okay
and that the problems were in the getspace storage allocator. Said bugs have
My plans for future changes are fairly open. There are two major objectives
I have in mind - one is to make it easier to write programs that use the engine
and the other is to improve performance. Improving performance is relatively
easy - one creates test beds and measure where the time and space are going.
Making it easier to write programs using the engine is a differenet matter. What
is involved here is a different way of writing programs and thinking about writing
- The PORT_NO define was replaced by two typedefs, input_v and
output_v, for inport and output ports respectively.
- The objtab table (actually agent table) free list linkage was
converted from struct pointers to table indices.
objtab_free_list was change to objtab_free_index.
- A new class of formats, pgmerror_formats, was created for
internal error conditions that signify a dangerous bug in the
- The defaults for the storage allocator initialization were
- The agent morbidity check was moved from san_delete_agent to
- A function called trap was added. As it stands it is a
no-op, but it can be changed to act when a specified condition is
met. There are calls to trap throughout the program.
- A new counter, usr_events, has been added. It is incremented
every time user code is executed.
- The variable, pq, was renamed to inp in get_inport.
- The code was changed so that the objtab seqno field is odd
for slots in the free list and even for slots currently in use.
This page was last updated June 20, 2009.