xref: /illumos-gate/usr/src/man/man3cpc/cpc_version.3cpc (revision 2bbdd445a21f9d61f4a0ca0faf05d5ceb2bd91f3)
te
Copyright (c) 2003, Sun Microsystems, Inc.
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
CPC_VERSION 3CPC "Mar 28, 2005"
NAME
cpc_version - coordinate CPC library and application versions
SYNOPSIS

cc [ flag... ] file... -lcpc [ library... ]
#include <libcpc.h>

uint_t cpc_version(uint_t version);
DESCRIPTION

The cpc_version() function takes an interface version as an argument and returns an interface version as a result. Usually, the argument will be the value of CPC_VER_CURRENT bound to the application when it was compiled.

RETURN VALUES

If the version requested is still supported by the implementation, cpc_version() returns the requested version number and the application can use the facilities of the library on that platform. If the implementation cannot support the version needed by the application, cpc_version() returns CPC_VER_NONE, indicating that the application will at least need to be recompiled to operate correctly on the new platform, and may require further changes.

If version is CPC_VER_NONE, cpc_version() returns the most current version of the library.

EXAMPLES

Example 1 Protect an application from using an incompatible library.

The following lines of code protect an application from using an incompatible library:

if (cpc_version(CPC_VER_CURRENT) == CPC_VER_NONE) {
 /* version mismatch - library cannot translate */
 exit(1);
}
ATTRIBUTES

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
Interface Stability Evolving
MT-Level Unsafe
SEE ALSO

cpc(3CPC), cpc_open(3CPC), libcpc(3LIB), attributes(5)

NOTES

The cpc_version() function exists for binary compatibility only. Source containing this function will not compile. This function is obsolete and might be removed in a future release. Applications should use cpc_open(3CPC) instead.

The version number is used only to express incompatible semantic changes in the performance counter interfaces on the given platform within a single instruction set architecture, for example, when a new set of performance counter registers are added to an existing processor family that cannot be specified in the existing cpc_event_t data structure.