1fbcd1dd1Schristos /*- 2fbcd1dd1Schristos * Copyright (c) 2008 John Birrell (jb@freebsd.org) 3fbcd1dd1Schristos * All rights reserved. 4fbcd1dd1Schristos * 5fbcd1dd1Schristos * Redistribution and use in source and binary forms, with or without 6fbcd1dd1Schristos * modification, are permitted provided that the following conditions 7fbcd1dd1Schristos * are met: 8fbcd1dd1Schristos * 1. Redistributions of source code must retain the above copyright 9fbcd1dd1Schristos * notice, this list of conditions and the following disclaimer. 10fbcd1dd1Schristos * 2. Redistributions in binary form must reproduce the above copyright 11fbcd1dd1Schristos * notice, this list of conditions and the following disclaimer in the 12fbcd1dd1Schristos * documentation and/or other materials provided with the distribution. 13fbcd1dd1Schristos * 14fbcd1dd1Schristos * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15fbcd1dd1Schristos * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16fbcd1dd1Schristos * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17fbcd1dd1Schristos * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18fbcd1dd1Schristos * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19fbcd1dd1Schristos * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20fbcd1dd1Schristos * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21fbcd1dd1Schristos * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22fbcd1dd1Schristos * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23fbcd1dd1Schristos * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24fbcd1dd1Schristos * SUCH DAMAGE. 25fbcd1dd1Schristos * 26fbcd1dd1Schristos * $FreeBSD: head/lib/libproc/_libproc.h 265255 2014-05-03 04:44:03Z markj $ 27fbcd1dd1Schristos */ 28fbcd1dd1Schristos 29fbcd1dd1Schristos #include <sys/cdefs.h> 30fbcd1dd1Schristos #include <sys/param.h> 31fbcd1dd1Schristos #include <sys/types.h> 32fbcd1dd1Schristos #include <sys/event.h> 33fbcd1dd1Schristos #include <sys/ptrace.h> 34fbcd1dd1Schristos #include <rtld_db.h> 35fbcd1dd1Schristos 36fbcd1dd1Schristos #include "libproc.h" 37fbcd1dd1Schristos 38fbcd1dd1Schristos struct proc_handle { 39fbcd1dd1Schristos pid_t pid; /* Process ID. */ 40fbcd1dd1Schristos int kq; /* Kernel event queue ID. */ 41fbcd1dd1Schristos int flags; /* Process flags. */ 42fbcd1dd1Schristos int status; /* Process status (PS_*). */ 43fbcd1dd1Schristos int wstat; /* Process wait status. */ 44*49f0a76dSchs int model; /* Process data model. */ 45fbcd1dd1Schristos rd_agent_t *rdap; /* librtld_db agent */ 46fbcd1dd1Schristos rd_loadobj_t *rdobjs; 47fbcd1dd1Schristos size_t rdobjsz; 48fbcd1dd1Schristos size_t nobjs; 49fbcd1dd1Schristos struct lwpstatus lwps; 50fbcd1dd1Schristos rd_loadobj_t *rdexec; /* rdobj index of program executable. */ 51fbcd1dd1Schristos char execname[MAXPATHLEN]; /* Path to program executable. */ 52fbcd1dd1Schristos }; 53fbcd1dd1Schristos 54fbcd1dd1Schristos #ifdef DEBUG 55fbcd1dd1Schristos #define DPRINTF(...) warn(__VA_ARGS__) 56fbcd1dd1Schristos #define DPRINTFX(...) warnx(__VA_ARGS__) 57fbcd1dd1Schristos #else 58fbcd1dd1Schristos #define DPRINTF(...) do { } while (0) 59fbcd1dd1Schristos #define DPRINTFX(...) do { } while (0) 60fbcd1dd1Schristos #endif 61