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.
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. |
None
None
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. |
None
None
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 |
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. |
None
Variables |
Runtime files |
Eiffel files |
Thread safety |
Mutex |
Purpose |