Product : VxWorks target

Date    : 18-January-1999

File    : Global.More info on DEF_NO_GLOBAL on VxWorks.htm

Subject : More info on DEF_NO_GLOBAL on VxWorks

Keywords: DEF_NO_GLOBAL - Global variables on VxWorks


Reserved for persons with the IDK


DEF_NO_GLOBAL has been implemented in the scope of VxWorks

implementation of the target.

On this system, all threads share the same location for global


This explains why you find tasy0gbl.h in VxWorks sources only.

The implementation does not consist in changing body of functions

without using globals.

The implementation consists in removing globals declaration and

instanciating them for each task incarnation.

Then the minimum requirement is to be able to specify that at least

several specific global variables (in our case pointers) have

different value (in our case the location of allocated memory)

according to the task incarnation.

This is generally done by the system scheduler facility

(taskVarAdd for VXWORKS) which save/retrieve the value according to

the task to execute at each context switch.

Of course there are only a few (2 or 3) of these variables.

Then any global variable name is defined as the corresponding field

pointed to by the task global pointer (see tasy0gbl.h).


More over there are some specific calls to allocate and initialize

structures of global data.


In VxWorks implementation, most of all globals are replaced,

for the kernel and for the communication task.

You can explore tasy0gbl.h file to see how globals have been

packed together.

There is:

a structure (str_ker_globals) for the kernel itself

a structure (str_common_globals) for all tasks, including the kernel

task. It mainly groups in fact data for the communicayion layer (lvx)

and the system layer.

a structure (str_srv_globals) for the asynchronous server clients


Copyright © 1996-2009 ICS Triplex ISaGRAF Inc. All rights reserved.