xref: /illumos-gate/usr/src/man/man3c_db/td_ta_new.3c_db (revision 2a6e99a0f1f7d22c0396e8b2ce9b9babbd1056cf)
te
Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved
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]
TD_TA_NEW 3C_DB "Oct 20, 1998"
NAME
td_ta_new, td_ta_delete, td_ta_get_ph - allocate and deallocate process handles for libc_db
SYNOPSIS

cc [ flag... ] file... -lc_db [ library... ]
#include <proc_service.h>
#include <thread_db.h>

td_err_e td_ta_new(const struct ps_prochandle *ph_p, td_thragent_t **ta_pp);

td_err_e td_ta_delete(const td_thragent_t *ta_p);

td_err_e td_ta_get_ph(const td_thragent_t *ta_p, struct ps_prochandle **ph_pp);
DESCRIPTION

The td_ta_new() function registers a target process with libc_db(3LIB) and allocates an internal process handle of type td_thragent_t for this target process. Subsequent calls to libc_db can use this handle to refer to this target process.

There are actually two process handles, an internal process handle assigned by libc_db and an external process handle assigned by the libc_db client. There is a one-to-one correspondence between the two handles. When the client calls a libc_db function, it uses the internal process handle. When libc_db calls one of the client-provided routines listed in proc_service(3PROC), it uses the external process handle.

The ph argument is the external process handle that libc_db should use to identify this target process to the controlling process when it calls routines in the imported interface.

If this call is successful, the value of the newly allocated td_thragent_t handle is returned in *ta_pp. The td_ta_delete() function deregisters a target process with libc_db, which deallocates its internal process handle and frees any other resources libc_db has acquired with respect to the target process. The ta_p argument specifies the target process to be deregistered.

The td_ta_get_ph() function returns in *ph_pp the external process handle that corresponds to the internal process handle ta_p. This is useful for checking internal consistency.

RETURN VALUES
TD_OK

The call completed successfully.

TD_BADPH

A NULL external process handle was passed to td_ta_new().

TD_ERR

The ta_pp argument is NULL or an internal error occurred.

TD_DBERR

A call to one of the imported interface routines failed.

TD_MALLOC

Memory allocation failure.

TD_NOLIBTHREAD

The target process does not appear to be multithreaded.

ATTRIBUTES

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

ATTRIBUTE TYPE ATTRIBUTE VALUE
MT-Level Safe
SEE ALSO

libc_db(3LIB), proc_service(3PROC), attributes(5)