[BACK]Return to kvm_private.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / lib / libkvm

Annotation of src/lib/libkvm/kvm_private.h, Revision 1.9

1.9     ! simonb      1: /*     $NetBSD: kvm_private.h,v 1.8 1997/08/12 16:27:01 gwr Exp $      */
1.6       thorpej     2:
1.1       cgd         3: /*-
                      4:  * Copyright (c) 1992, 1993
                      5:  *     The Regents of the University of California.  All rights reserved.
                      6:  *
                      7:  * This code is derived from software developed by the Computer Systems
                      8:  * Engineering group at Lawrence Berkeley Laboratory under DARPA contract
                      9:  * BG 91-66 and contributed to Berkeley.
                     10:  *
                     11:  * Redistribution and use in source and binary forms, with or without
                     12:  * modification, are permitted provided that the following conditions
                     13:  * are met:
                     14:  * 1. Redistributions of source code must retain the above copyright
                     15:  *    notice, this list of conditions and the following disclaimer.
                     16:  * 2. Redistributions in binary form must reproduce the above copyright
                     17:  *    notice, this list of conditions and the following disclaimer in the
                     18:  *    documentation and/or other materials provided with the distribution.
                     19:  * 3. All advertising materials mentioning features or use of this software
                     20:  *    must display the following acknowledgement:
                     21:  *     This product includes software developed by the University of
                     22:  *     California, Berkeley and its contributors.
                     23:  * 4. Neither the name of the University nor the names of its contributors
                     24:  *    may be used to endorse or promote products derived from this software
                     25:  *    without specific prior written permission.
                     26:  *
                     27:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     28:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     29:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     30:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     31:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     32:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     33:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     34:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     35:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     36:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     37:  * SUCH DAMAGE.
                     38:  *
                     39:  *     @(#)kvm_private.h       8.1 (Berkeley) 6/4/93
                     40:  */
                     41:
                     42: struct __kvm {
                     43:        /*
                     44:         * a string to be prepended to error messages
                     45:         * provided for compatibility with sun's interface
                     46:         * if this value is null, errors are saved in errbuf[]
                     47:         */
                     48:        const char *program;
                     49:        char    *errp;          /* XXX this can probably go away */
                     50:        char    errbuf[_POSIX2_LINE_MAX];
                     51:        DB      *db;
                     52:        int     pmfd;           /* physical memory file (or crashdump) */
                     53:        int     vmfd;           /* virtual memory file (-1 if crashdump) */
                     54:        int     swfd;           /* swap file (e.g., /dev/drum) */
                     55:        int     nlfd;           /* namelist file (e.g., /vmunix) */
1.9     ! simonb     56:        char    alive;          /* live kernel? */
1.1       cgd        57:        struct kinfo_proc *procbase;
1.9     ! simonb     58:        struct kinfo_proc2 *procbase2;
1.8       gwr        59:        u_long  usrstack;               /* address of end of user stack */
                     60:        u_long  min_uva, max_uva;       /* min/max user virtual address */
1.2       mycroft    61:        int     nbpg;           /* page size */
                     62:        char    *swapspc;       /* (dynamic) storage for swapped pages */
1.4       mycroft    63:        char    *argspc, *argbuf; /* (dynamic) storage for argv strings */
1.1       cgd        64:        int     arglen;         /* length of the above */
                     65:        char    **argv;         /* (dynamic) storage for argv pointers */
                     66:        int     argc;           /* length of above (not actual # present) */
1.5       leo        67:
                     68:        /*
                     69:         * Header structures for kernel dumps. Only gets filled in for
                     70:         * dead kernels.
                     71:         */
                     72:        struct kcore_hdr        *kcore_hdr;
1.7       gwr        73:        size_t  cpu_dsize;
                     74:        void    *cpu_data;
1.5       leo        75:        off_t   dump_off;       /* Where the actual dump starts */
                     76:
1.1       cgd        77:        /*
                     78:         * Kernel virtual address translation state.  This only gets filled
                     79:         * in for dead kernels; otherwise, the running kernel (i.e. kmem)
                     80:         * will do the translations for us.  It could be big, so we
                     81:         * only allocate it if necessary.
                     82:         */
1.5       leo        83:        struct vmstate *vmst; /* XXX: should become obsoleted */
1.3       mycroft    84:        /*
                     85:         * These kernel variables are used for looking up user addresses,
                     86:         * and are cached for efficiency.
                     87:         */
                     88:        struct pglist *vm_page_buckets;
                     89:        int vm_page_hash_mask;
1.1       cgd        90: };
1.9     ! simonb     91:
        !            92: /* Levels of aliveness */
        !            93: #define        KVM_ALIVE_DEAD          0       /* dead, working from core file */
        !            94: #define        KVM_ALIVE_FILES         1       /* alive, working from open kmem/drum */
        !            95: #define        KVM_ALIVE_SYSCTL        2       /* alive, sysctl-type calls only */
        !            96:
        !            97: #define        ISALIVE(kd)     ((kd)->alive != KVM_ALIVE_DEAD)
        !            98: #define        ISKMEM(kd)      ((kd)->alive == KVM_ALIVE_FILES)
        !            99: #define        ISSYSCTL(kd)    ((kd)->alive == KVM_ALIVE_SYSCTL || ISKMEM(kd))
1.1       cgd       100:
                    101: /*
                    102:  * Functions used internally by kvm, but across kvm modules.
                    103:  */
                    104: void    _kvm_err __P((kvm_t *kd, const char *program, const char *fmt, ...));
1.5       leo       105: int     _kvm_dump_mkheader __P((kvm_t *kd_live, kvm_t *kd_dump));
1.1       cgd       106: void    _kvm_freeprocs __P((kvm_t *kd));
                    107: void    _kvm_freevtop __P((kvm_t *));
1.8       gwr       108: int     _kvm_mdopen __P((kvm_t *));
1.1       cgd       109: int     _kvm_initvtop __P((kvm_t *));
                    110: int     _kvm_kvatop __P((kvm_t *, u_long, u_long *));
                    111: void   *_kvm_malloc __P((kvm_t *kd, size_t));
1.5       leo       112: off_t   _kvm_pa2off __P((kvm_t *, u_long));
1.1       cgd       113: void   *_kvm_realloc __P((kvm_t *kd, void *, size_t));
                    114: void    _kvm_syserr
                    115:            __P((kvm_t *kd, const char *program, const char *fmt, ...));

CVSweb <webmaster@jp.NetBSD.org>