xref: /netbsd-src/external/bsd/libproc/dist/_libproc.h (revision 49f0a76d48d00b01912df1b4870e2ece974f2415)
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