PetscStackCallExternalVoid#

Calls an external library routine or user function after pushing the name of the routine on the stack.

Input Parameters#

  • name - string that gives the name of the function being called

  • routine - actual call to the routine, for example, functionname(a,b)

Notes#

Often one should use PetscCallExternal() instead. This routine is intended for external library routines that DO NOT return error codes

In debug mode this also checks the memory for corruption at the end of the function call.

Certain external packages, such as BLAS/LAPACK may have their own macros, PetscCallBLAS() for managing the call, error checking, etc.

Developer Note#

This is so that when a user or external library routine results in a crash or corrupts memory, they get blamed instead of PETSc.

See Also#

PetscCall(), PetscStackPushNoCheck(), PetscStackPush(), PetscCallExternal(), PetscCallBLAS() @*/ #define PetscStackCallExternalVoid(name, …)
do {
PetscStackPushExternal(name);
VA_ARGS;
PetscStackPop;
} while (0)

/*MC PetscCallExternal - Calls an external library routine that returns an error code after pushing the name of the routine on the stack.

Input Parameters#

  • func - name of the routine

  • args - arguments to the routine

Notes#

This is intended for external package routines that return error codes. Use PetscStackCallExternalVoid() for those that do not.

In debug mode this also checks the memory for corruption at the end of the function call.

Assumes the error return code of the function is an integer and that a value of 0 indicates success

Developer Note#

This is so that when an external package routine results in a crash or corrupts memory, they get blamed instead of PETSc.

See Also#

PetscCall(), PetscStackPushNoCheck(), PetscStackPush(), PetscStackCallExternalVoid(), PetscCallExternalAbort()

Level#

developer

Location#

include/petscerror.h


Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages