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 */