Runtime variables

The purpose of this page is to collect all variables used by runtime and to properly identify them and their usage. This list should be exhaustive and will help person working on the runtime to quickly identify how and when to use such variables.

argv.c

Variables

Runtime files

Eiffel files

Thread safety

Purpose

eif_argc, eif_argv eif_argv.h
argv.c
ARGUMENTS
MEL_DISPLAY
EV_APPLICATION_IMP (gtk implementation)
Initialized by `arg_init' in `eif_rtinit' so no need for synchronization. To get access to command line arguments.

bits.c

None

boolstr.c

None

cecil.c

Variables

Runtime files

Eiffel files

Thread safety

Purpose

eif_visible_is_off     Access through `cecil_lock' mutex Turn on or off exception when routine is not visible.

compress.c

None

console.c

None

copy.c

Variables

Runtime files

Eiffel files

Thread safety

Purpose

hclone   ISE_RUNTIME

FIXME: hclone is access is not protected. Therefore to deep clone/copy operation occurring at the same time in two different threads will certainly fail. Solution is to put `hclone' in the `eif_globals' structure, so that two threads can perform parallel deep copy/clone.

To perform deep cloning

debug.c

Variables

Runtime files

Eiffel files

Thread safety

Mutex

Purpose

db_stack Per thread data Debugging stack
once_list Per thread data Display of once function values in debugger
d_data Per thread data Debugger status
d_cxt Per thread data Main program context
cop_stack Per thread data Store local/argument values in debugger
d_globaldata    

FIXME: no synchronization is done on accessing fields of this structure

  Is debugging disabled for a while?
Is current code location a breakpoint which is set?
db_mutex     Safe, created during initialization in`dbreak_create_table'.   To ensure that only one thread is stopped at a time in EiffelStudio debugger.
breakpoint_count     Safe as it is only modified by `set_breakpoint_count' called from `ipc/app/app_proto.c' while the application is stopped during debugging. So there will be no concurrent access to this variable. Indirectly through `db_mutex' Interval of time we use to check if we should stop in debugger.
recorded_breakpoint_count     Safe as it is only modified and accessed by `should_be_interrupted' which is only called through mutex db_mutex Count how many times we have been called, use in conjonction with `breakpoint_count'.
previous_bodyid     Safe through mutex db_mutex To record last body_id where we stopped last time.
previous_break_index Safe through mutex db_mutex To record last position where we stopped last time.
critical_stack_depth Safe through mutex db_mutex Limit to which we warn EiffelStudio there might be a stack overflow occurring.
already_warned Safe through mutex db_mutex Did we already warn user of a potential stack overflow.

dir.c

None

eif_project.c

 

fd

Variables

Runtime files

Eiffel files

Thread safety

Mutex

Purpose