Annotation of XNU/osfmk/ddb/db_break.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * The contents of this file constitute Original Code as defined in and
        !             7:  * are subject to the Apple Public Source License Version 1.1 (the
        !             8:  * "License").  You may not use this file except in compliance with the
        !             9:  * License.  Please obtain a copy of the License at
        !            10:  * http://www.apple.com/publicsource and read it before using this file.
        !            11:  * 
        !            12:  * This Original Code and all software distributed under the License are
        !            13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            17:  * License for the specific language governing rights and limitations
        !            18:  * under the License.
        !            19:  * 
        !            20:  * @APPLE_LICENSE_HEADER_END@
        !            21:  */
        !            22: /*
        !            23:  * @OSF_COPYRIGHT@
        !            24:  */
        !            25: /*
        !            26:  * HISTORY
        !            27:  * 
        !            28:  * Revision 1.1.1.1  1998/09/22 21:05:47  wsanchez
        !            29:  * Import of Mac OS X kernel (~semeria)
        !            30:  *
        !            31:  * Revision 1.1.1.1  1998/03/07 02:26:09  wsanchez
        !            32:  * Import of OSF Mach kernel (~mburg)
        !            33:  *
        !            34:  * Revision 1.1.18.3  1995/01/06  19:10:05  devrcs
        !            35:  *     mk6 CR668 - 1.3b26 merge
        !            36:  *     64bit cleanup, prototypes.
        !            37:  *     [1994/10/14  03:39:52  dwm]
        !            38:  *
        !            39:  * Revision 1.1.18.2  1994/09/23  01:18:04  ezf
        !            40:  *     change marker to not FREE
        !            41:  *     [1994/09/22  21:09:24  ezf]
        !            42:  * 
        !            43:  * Revision 1.1.18.1  1994/06/11  21:11:29  bolinger
        !            44:  *     Merge up to NMK17.2.
        !            45:  *     [1994/06/11  20:03:39  bolinger]
        !            46:  * 
        !            47:  * Revision 1.1.16.1  1994/04/11  09:34:32  bernadat
        !            48:  *     Moved db_breakpoint struct declaration from db_break.c
        !            49:  *     to here.
        !            50:  *     [94/03/16            bernadat]
        !            51:  * 
        !            52:  * Revision 1.1.12.2  1994/03/17  22:35:24  dwm
        !            53:  *     The infamous name change:  thread_activation + thread_shuttle = thread.
        !            54:  *     [1994/03/17  21:25:41  dwm]
        !            55:  * 
        !            56:  * Revision 1.1.12.1  1994/01/12  17:50:30  dwm
        !            57:  *     Coloc: initial restructuring to follow Utah model.
        !            58:  *     [1994/01/12  17:13:00  dwm]
        !            59:  * 
        !            60:  * Revision 1.1.4.4  1993/07/27  18:26:51  elliston
        !            61:  *     Add ANSI prototypes.  CR #9523.
        !            62:  *     [1993/07/27  18:10:59  elliston]
        !            63:  * 
        !            64:  * Revision 1.1.4.3  1993/06/07  22:06:31  jeffc
        !            65:  *     CR9176 - ANSI C violations: trailing tokens on CPP
        !            66:  *     directives, extra semicolons after decl_ ..., asm keywords
        !            67:  *     [1993/06/07  18:57:06  jeffc]
        !            68:  * 
        !            69:  * Revision 1.1.4.2  1993/06/02  23:10:21  jeffc
        !            70:  *     Added to OSF/1 R1.3 from NMK15.0.
        !            71:  *     [1993/06/02  20:55:49  jeffc]
        !            72:  * 
        !            73:  * Revision 1.1  1992/09/30  02:24:12  robert
        !            74:  *     Initial revision
        !            75:  * 
        !            76:  * $EndLog$
        !            77:  */
        !            78: /* CMU_HIST */
        !            79: /*
        !            80:  * Revision 2.6  91/10/09  15:58:03  af
        !            81:  *      Revision 2.5.3.1  91/10/05  13:05:04  jeffreyh
        !            82:  *             Added db_thread_breakpoint structure, and added task and threads
        !            83:  *             field to db_breakpoint structure.  Some status flags were also
        !            84:  *             added to keep track user space break point correctly.
        !            85:  *             [91/08/29            tak]
        !            86:  * 
        !            87:  * Revision 2.5.3.1  91/10/05  13:05:04  jeffreyh
        !            88:  *     Added db_thread_breakpoint structure, and added task and threads
        !            89:  *     field to db_breakpoint structure.  Some status flags were also
        !            90:  *     added to keep track user space break point correctly.
        !            91:  *     [91/08/29            tak]
        !            92:  * 
        !            93:  * Revision 2.5  91/05/14  15:32:35  mrt
        !            94:  *     Correcting copyright
        !            95:  * 
        !            96:  * Revision 2.4  91/02/05  17:06:06  mrt
        !            97:  *     Changed to new Mach copyright
        !            98:  *     [91/01/31  16:17:10  mrt]
        !            99:  * 
        !           100:  * Revision 2.3  90/10/25  14:43:40  rwd
        !           101:  *     Added map field to breakpoints.
        !           102:  *     [90/10/18            rpd]
        !           103:  * 
        !           104:  * Revision 2.2  90/08/27  21:50:00  dbg
        !           105:  *     Modularized typedef names.
        !           106:  *     [90/08/20            af]
        !           107:  *     Add external defintions.
        !           108:  *     [90/08/07            dbg]
        !           109:  *     Created.
        !           110:  *     [90/07/25            dbg]
        !           111:  * 
        !           112:  */
        !           113: /* CMU_ENDHIST */
        !           114: /* 
        !           115:  * Mach Operating System
        !           116:  * Copyright (c) 1991,1990 Carnegie Mellon University
        !           117:  * All Rights Reserved.
        !           118:  * 
        !           119:  * Permission to use, copy, modify and distribute this software and its
        !           120:  * documentation is hereby granted, provided that both the copyright
        !           121:  * notice and this permission notice appear in all copies of the
        !           122:  * software, derivative works or modified versions, and any portions
        !           123:  * thereof, and that both notices appear in supporting documentation.
        !           124:  * 
        !           125:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
        !           126:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
        !           127:  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
        !           128:  * 
        !           129:  * Carnegie Mellon requests users of this software to return to
        !           130:  * 
        !           131:  *  Software Distribution Coordinator  or  [email protected]
        !           132:  *  School of Computer Science
        !           133:  *  Carnegie Mellon University
        !           134:  *  Pittsburgh PA 15213-3890
        !           135:  * 
        !           136:  * any improvements or extensions that they make and grant Carnegie Mellon
        !           137:  * the rights to redistribute these changes.
        !           138:  */
        !           139: /*
        !           140:  */
        !           141: /*
        !           142:  *     Author: David B. Golub, Carnegie Mellon University
        !           143:  *     Date:   7/90
        !           144:  */
        !           145: #ifndef        _DDB_DB_BREAK_H_
        !           146: #define        _DDB_DB_BREAK_H_
        !           147: 
        !           148: #include <machine/db_machdep.h>
        !           149: #include <kern/thread.h>
        !           150: #include <kern/task.h>
        !           151: #include <mach/boolean.h>
        !           152: 
        !           153: /*
        !           154:  * thread list at the same breakpoint address
        !           155:  */
        !           156: struct db_thread_breakpoint {
        !           157:        vm_offset_t tb_task_thd;                /* target task or thread */
        !           158:        boolean_t tb_is_task;                   /* task qualified */
        !           159:        short    tb_number;                     /* breakpoint number */
        !           160:        short    tb_init_count;                 /* skip count(initial value) */
        !           161:        short    tb_count;                      /* current skip count */
        !           162:        short    tb_cond;                       /* break condition */
        !           163:        struct   db_thread_breakpoint *tb_next; /* next chain */
        !           164: };
        !           165: typedef struct db_thread_breakpoint *db_thread_breakpoint_t;
        !           166: 
        !           167: /*
        !           168:  * Breakpoint.
        !           169:  */
        !           170: struct db_breakpoint {
        !           171:        task_t    task;                 /* target task */
        !           172:        db_addr_t address;              /* set here */
        !           173:        db_thread_breakpoint_t threads; /* thread */
        !           174:        int     flags;                  /* flags: */
        !           175: #define        BKPT_SINGLE_STEP        0x2     /* to simulate single step */
        !           176: #define        BKPT_TEMP               0x4     /* temporary */
        !           177: #define BKPT_USR_GLOBAL                0x8     /* global user space break point */
        !           178: #define BKPT_SET_IN_MEM                0x10    /* break point is set in memory */
        !           179: #define BKPT_1ST_SET           0x20    /* 1st time set of user global bkpt */
        !           180:        vm_size_t       bkpt_inst;      /* saved instruction at bkpt */
        !           181:        struct db_breakpoint *link;     /* link in in-use or free chain */
        !           182: };
        !           183: 
        !           184: typedef struct db_breakpoint *db_breakpoint_t;
        !           185: 
        !           186: 
        !           187: /*
        !           188:  * Prototypes for functions exported by this module.
        !           189:  */
        !           190: 
        !           191: db_thread_breakpoint_t db_find_thread_breakpoint_here(
        !           192:        task_t          task,
        !           193:        db_addr_t       addr);
        !           194: 
        !           195: void db_check_breakpoint_valid(void);
        !           196: 
        !           197: void db_set_breakpoint(
        !           198:        task_t          task,
        !           199:        db_addr_t       addr,
        !           200:        int             count,
        !           201:        thread_act_t    thr_act,
        !           202:        boolean_t       task_bpt);
        !           203: 
        !           204: db_breakpoint_t db_find_breakpoint(
        !           205:        task_t          task,
        !           206:        db_addr_t       addr);
        !           207: 
        !           208: boolean_t db_find_breakpoint_here(
        !           209:        task_t          task,
        !           210:        db_addr_t       addr);
        !           211: 
        !           212: db_thread_breakpoint_t db_find_breakpoint_number(
        !           213:        int             num,
        !           214:        db_breakpoint_t *bkptp);
        !           215: 
        !           216: void db_set_breakpoints(void);
        !           217: 
        !           218: void db_clear_breakpoints(void);
        !           219: 
        !           220: db_breakpoint_t db_set_temp_breakpoint(
        !           221:        task_t          task,
        !           222:        db_addr_t       addr);
        !           223: 
        !           224: void db_delete_temp_breakpoint(
        !           225:        task_t          task,
        !           226:        db_breakpoint_t bkpt);
        !           227: 
        !           228: void db_delete_cmd(void);
        !           229: 
        !           230: void db_breakpoint_cmd(
        !           231:        db_expr_t       addr,
        !           232:        int             have_addr,
        !           233:        db_expr_t       count,
        !           234:        char *          modif);
        !           235: 
        !           236: void db_listbreak_cmd(void);
        !           237: 
        !           238: #endif /* !_DDB_DB_BREAK_H_ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.