alloc, dealloc, print, read_data, read_regs, symbol_addrs, write_data, and write_regs Subroutine

Purpose

Provide access to facilities needed by the pthread debug library and supplied by the debugger or application.

Library

pthread debug library (libpthdebug.a)

Syntax

#include <sys/pthdebug.h>

int alloc (user, len, bufp)
pthdb_user_t user;
size_t len;
void **bufp;
int dealloc (user, buf)
pthdb_user_t user;
void *buf;
int print (user, str)
pthdb_user_t user;
char *str;
int read_data (user, buf, addr, size)
pthdb_user_t user;
void *buf;
pthdb_addr_t addr;
int size;
int read_regs (user, tid, flags, context)
pthdb_user_t user;
tid_t tid;
unsigned long long flags;
struct context64 *context;
int symbol_addrs (user, symbols[],count)
pthdb_user_t user;
pthdb_symbol_t symbols[];
int count;
int write_data (user, buf, addr, size)
pthdb_user_t user;
void *buf;
pthdb_addr_t addr;
int size;
int write_regs (user, tid, flags, context)
pthdb_user_t user;
tid_t tid;
unsigned long long flags;
struct context64 *context;

Description

int alloc()
Allocates len bytes of memory and returns the address. If successful, 0 is returned; otherwise, a nonzero number is returned. This call back function is always required.
int dealloc()
Takes a buffer and frees it. If successful, 0 is returned; otherwise, a nonzero number is returned. This call back function is always required.
int print()
Prints the character string to the debugger's stdout. If successful, 0 is returned; otherwise, a nonzero number is returned. This call back is for debugging the library only. If you aren't debugging the pthread debug library, pass a NULL value for this call back.
int read_data()
Reads the requested number of bytes of data at the requested location from an active process or core file and returns the data through a buffer. If successful, 0 is returned; otherwise, a nonzero number is returned. This call back function is always required.
int read_regs()
Reads the context information of a debuggee kernel thread from an active process or from a core file. The information should be formatted in context64 form for both a 32-bit and a 64-bit process. If successful, 0 is returned; otherwise, a nonzero number is returned. This function is only required when using the pthdb_pthread_context and pthdb_pthread_setcontext subroutines.
int symbol_addrs()
Resolves the address of symbols in the debuggee. The pthread debug library calls this subroutine to get the address of known debug symbols. If the symbol has a name of NULL or "", set the address to 0LL instead of doing a lookup or returning an error. If successful, 0 is returned; otherwise, a nonzero number is returned. In introspective mode, when the PTHDB_FLAG_SUSPEND flag is set, the application can use the pthread debug library by passing NULL, or it can use one of its own.
int write_data()
Writes the requested number of bytes of data to the requested location. The libpthdebug.a library may use this to write data to the active process. If successful, 0 is returned; otherwise, a nonzero number is returned. This call back function is required when the PTHDB_FLAG_HOLD flag is set and when using the pthdb_pthread_setcontext subroutine.
int write_regs()
Writes requested context information to specified debuggee's kernel thread id. If successful, 0 is returned; otherwise, a nonzero number is returned. This subroutine is only required when using the pthdb_pthread_setcontext subroutine.
Note: If the write_data and write_regs subroutines are NULL, the pthread debug library will not try to write data or regs. If the pthdb_pthread_set_context subroutine is called when the write_data and write_regs subroutines are NULL, PTHDB_NOTSUP is returned.

Parameters

Item Description
user User handle.
symbols Array of symbols.
count Number of symbols.
buf Buffer.
addr Address to be read from or wrote to.
size Size of the buffer.
flags Session flags, must accept PTHDB_FLAG_GPRS, PTHDB_FLAG_SPRS, PTHDB_FLAG_FPRS, and PTHDB_FLAG_REGS.
tid Thread id.
flags Flags that control which registers are read or wrote.
context Context structure.
len Length of buffer to be allocated or reallocated.
bufp Pointer to buffer.
str String to be printed.

Return Values

If successful, these subroutines return 0; otherwise they return a nonzero value.