[ Previous | Next | Table of Contents | Index | Library Home | Legal | Search ]

Technical Reference: Base Operating System and Extensions , Volume 2

SpmiDdsInit Subroutine



SPMI Library (libSpmi.a)


#include sys/Spmidef.h

SpmiShare *SpmiDdsInit(CxTab, CxCnt, IxTab, IxCnt,
cx_create *CxTab, *IxTab;
int CxCnt, IxCnt;
char *FileName;


The SpmiDdsInit subroutine establishes a program as a dynamic data-supplier (DDS) program. To do so, the SpmiDdsInit subroutine:

  1. Determines the size of the shared memory required and creates a shared memory segment of that size.
  2. Moves all static contexts and all statistics referenced by those contexts to the shared memory.
  3. Calls the SPMI and requests it to add all of the DDS static contexts to the context tree.

  1. The SpmiDdsInit subroutine issues an SpmiInit subroutine call if the application program has not issued one.
  2. If the calling program uses shared memory for other purposes, including memory mapping of files, the SpmiDdsInit or the SpmiInit subroutine call must be issued before access is established to other shared memory areas.



Specifies a pointer to the table of nonvolatile contexts to be added.


Specifies the number of elements in the table of nonvolatile contexts. Use the CX_L macro to find this value.


Specifies a pointer to the table of volatile contexts the program may want to add later. If no contexts are defined, specify NULL.


Specifies the number of elements in the table of volatile contexts. Use the CX_L macro to find this value. If no contexts are defined, specify 0.


Specifies the fully qualified path and file name to use when creating the shared memory segment. At execution time, if the file exists, the process running the DDS must be able to write to the file. Otherwise, the SpmiDdsInit subroutine call does not succeed. If the file does not exist, it is created. If the file cannot be created, the subroutine returns an error. If the file name includes directories that do not exist, the subroutine returns an error.

For non-AIX systems, a sixth argument is required to inform the SPMI how much memory to allocate in the DDS shared memory segment. This is not required for AIX systems because facilities exist to expand a memory allocation in shared memory. The sixth argument is:


Size in bytes of the shared memory area to allocate for the DDS program. This parameter is of type int.

Return Values

If successful, the SpmiDdsInit subroutine returns the address of the shared memory control area. If an error occurs, an error text is placed in the external SpmiErrmsg character array, and the subroutine returns a NULL value.

Error Codes

All SPMI subroutines use external variables to provide error information. To access these variables, an application program must define the following external variables:

If the subroutine returns without an error, the SpmiErrno variable is set to 0 and the SpmiErrmsg character array is empty. If an error is detected, the SpmiErrno variable returns an error code, as defined in the sys/Spmidef.h file, and the SpmiErrmsg variable contains text, in English, explaining the cause of the error. See the List of SPMI Error Codes for more information.

Implementation Specifics

This subroutine is part of the server option of the Performance Aide for AIX licensed product and is also included in the Performance Toolbox for AIX licensed product.


/usr/include/sys/Spmidef.h Declares the subroutines, data structures, handles, and macros that an application program can use to access the SPMI.

Related Information

For related information, see:

[ Previous | Next | Table of Contents | Index | Library Home | Legal | Search ]