1132173Sdavidxu/* 2132173Sdavidxu * Copyright (c) 2004 David Xu <davidxu@freebsd.org> 3132297Smarcel * Copyright (c) 2004 Marcel Moolenaar 4132173Sdavidxu * All rights reserved. 5132173Sdavidxu * 6132173Sdavidxu * Redistribution and use in source and binary forms, with or without 7132173Sdavidxu * modification, are permitted provided that the following conditions 8132173Sdavidxu * are met: 9132173Sdavidxu * 1. Redistributions of source code must retain the above copyright 10132173Sdavidxu * notice, this list of conditions and the following disclaimer. 11132173Sdavidxu * 2. Redistributions in binary form must reproduce the above copyright 12132173Sdavidxu * notice, this list of conditions and the following disclaimer in the 13132173Sdavidxu * documentation and/or other materials provided with the distribution. 14132173Sdavidxu * 15132297Smarcel * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND 16132173Sdavidxu * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17132173Sdavidxu * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18132297Smarcel * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE 19132173Sdavidxu * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20132173Sdavidxu * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21132173Sdavidxu * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22132173Sdavidxu * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23132173Sdavidxu * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24132173Sdavidxu * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25132173Sdavidxu * SUCH DAMAGE. 26132173Sdavidxu * 27132173Sdavidxu * $FreeBSD$ 28132173Sdavidxu */ 29132173Sdavidxu 30132173Sdavidxu#ifndef _PROC_SERVICE_H_ 31132297Smarcel#define _PROC_SERVICE_H_ 32132173Sdavidxu 33132173Sdavidxu#include <sys/types.h> 34132173Sdavidxu#include <sys/procfs.h> 35132173Sdavidxu 36132297Smarceltypedef enum { 37132297Smarcel PS_OK = 0, /* No errors. */ 38132297Smarcel PS_ERR, /* Generic error. */ 39132297Smarcel PS_BADADDR, /* Bad address. */ 40132297Smarcel PS_BADLID, /* Bad LWP Id. */ 41132297Smarcel PS_BADPID, /* Bad process Id. */ 42132297Smarcel PS_NOFREGS, /* FPU register set not available. */ 43132297Smarcel PS_NOSYM /* Symbol not found. */ 44132173Sdavidxu} ps_err_e; 45132173Sdavidxu 46132297Smarcelstruct ps_prochandle; /* Opaque type. Defined by the implementor. */ 47132173Sdavidxu 48132297Smarcel__BEGIN_DECLS 49132297Smarcelps_err_e ps_lcontinue(struct ps_prochandle *, lwpid_t); 50132297Smarcelps_err_e ps_lgetfpregs(struct ps_prochandle *, lwpid_t, prfpregset_t *); 51132297Smarcelps_err_e ps_lgetregs(struct ps_prochandle *, lwpid_t, prgregset_t); 52132297Smarcelps_err_e ps_lsetfpregs(struct ps_prochandle *, lwpid_t, const prfpregset_t *); 53132297Smarcelps_err_e ps_lsetregs(struct ps_prochandle *, lwpid_t, const prgregset_t); 54146818Sdfr#ifdef __i386__ 55146818Sdfrps_err_e ps_lgetxmmregs (struct ps_prochandle *, lwpid_t, char *); 56146818Sdfrps_err_e ps_lsetxmmregs (struct ps_prochandle *, lwpid_t, const char *); 57146818Sdfr#endif 58132297Smarcelps_err_e ps_lstop(struct ps_prochandle *, lwpid_t); 59155412Sdavidxups_err_e ps_linfo(struct ps_prochandle *, lwpid_t, void *); 60132297Smarcelps_err_e ps_pcontinue(struct ps_prochandle *); 61132297Smarcelps_err_e ps_pdmodel(struct ps_prochandle *, int *); 62132297Smarcelps_err_e ps_pglobal_lookup(struct ps_prochandle *, const char *, const char *, 63132297Smarcel psaddr_t *); 64132297Smarcelvoid ps_plog(const char *, ...); 65132297Smarcelps_err_e ps_pread(struct ps_prochandle *, psaddr_t, void *, size_t); 66132297Smarcelps_err_e ps_pstop(struct ps_prochandle *); 67132297Smarcelps_err_e ps_pwrite(struct ps_prochandle *, psaddr_t, const void *, size_t); 68132297Smarcel__END_DECLS 69132297Smarcel 70132297Smarcel#endif /* _PROC_SERVICE_H_ */ 71