Print this page
3946 ::gcore
Reviewed by: Adam Leventhal <ahl@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
@@ -23,10 +23,11 @@
* Use is subject to license terms.
*/
/*
* Copyright 2012 DEY Storage Systems, Inc. All rights reserved.
* Copyright (c) 2013, Joyent, Inc. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
*/
#ifndef _PCONTROL_H
#define _PCONTROL_H
@@ -41,10 +42,11 @@
#include <procfs.h>
#include <rtld_db.h>
#include <libproc.h>
#include <libctf.h>
#include <limits.h>
+#include <libproc.h>
#ifdef __cplusplus
extern "C" {
#endif
@@ -188,17 +190,10 @@
elf_file_header_t e_hdr; /* Extended ELF header */
Elf *e_elf; /* ELF library handle */
int e_fd; /* file descriptor */
} elf_file_t;
-typedef struct ps_rwops { /* ops vector for Pread() and Pwrite() */
- ssize_t (*p_pread)(struct ps_prochandle *,
- void *, size_t, uintptr_t);
- ssize_t (*p_pwrite)(struct ps_prochandle *,
- const void *, size_t, uintptr_t);
-} ps_rwops_t;
-
#define HASHSIZE 1024 /* hash table size, power of 2 */
struct ps_prochandle {
struct ps_lwphandle **hashtab; /* hash table for LWPs (Lgrab()) */
mutex_t proc_lock; /* protects hash table; serializes Lgrab() */
@@ -225,20 +220,20 @@
auxv_t *auxv; /* the process's aux vector */
int nauxv; /* number of aux vector entries */
rd_agent_t *rap; /* cookie for rtld_db */
map_info_t *map_exec; /* the mapping for the executable file */
map_info_t *map_ldso; /* the mapping for ld.so.1 */
- const ps_rwops_t *ops; /* pointer to ops-vector for read and write */
- core_info_t *core; /* information specific to core (if PS_DEAD) */
+ ps_ops_t ops; /* ops-vector */
uintptr_t *ucaddrs; /* ucontext-list addresses */
uint_t ucnelems; /* number of elements in the ucaddrs list */
char *zoneroot; /* cached path to zone root */
plist_t fd_head; /* head of file desc info list */
int num_fd; /* number of file descs in list */
uintptr_t map_missing; /* first missing mapping in core due to sig */
siginfo_t killinfo; /* signal that interrupted core dump */
psinfo_t spymaster; /* agent LWP's spymaster, if any */
+ void *data; /* private data */
};
/* flags */
#define CREATED 0x01 /* process was created by Pcreate() */
#define SETSIG 0x02 /* set signal trace mask before continuing */
@@ -245,10 +240,11 @@
#define SETFAULT 0x04 /* set fault trace mask before continuing */
#define SETENTRY 0x08 /* set sysentry trace mask before continuing */
#define SETEXIT 0x10 /* set sysexit trace mask before continuing */
#define SETHOLD 0x20 /* set signal hold mask before continuing */
#define SETREGS 0x40 /* set registers before continuing */
+#define INCORE 0x80 /* use in-core data to build symbol tables */
struct ps_lwphandle {
struct ps_prochandle *lwp_proc; /* process to which this lwp belongs */
struct ps_lwphandle *lwp_hash; /* hash table linked list */
lwpstatus_t lwp_status; /* status when stopped */