typedef struct _ompd_aspace_handle ompd_address_space_handle_t;
typedef struct _ompd_thread_handle ompd_thread_handle_t;
typedef struct _ompd_parallel_handle ompd_parallel_handle_t;
typedef struct _ompd_task_handle ompd_task_handle_t;
Summary The OMPD library defines handles for referring to address spaces, threads, parallel regions and tasks. The internal structure of the handles are opaque to the third-party tool.
Description OMPD uses handles for address spaces (ompd_address_space_handle_t), threads (ompd_thread_handle_t), parallel regions (ompd_parallel_handle_t), and tasks (ompd_task_handle_t). Each operation of the OMPD interface that applies to a particular address space, thread, parallel region or task must explicitly specify a corresponding handle. A handle for an entity is constant while the entity itself is alive. Handles are defined by the OMPD library and are opaque to the third-party tool.
Defining externally visible type names in this way introduces type safety to the interface, and helps to catch instances where incorrect handles are passed by the third-party tool to the OMPD library. The structures do not need to be defined; instead, the OMPD library must cast incoming (pointers to) handles to the appropriate internal, private types.