|
|
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: /* ! 27: * HISTORY ! 28: * ! 29: * Revision 1.1.1.1 1998/09/22 21:05:34 wsanchez ! 30: * Import of Mac OS X kernel (~semeria) ! 31: * ! 32: * Revision 1.1.1.1 1998/03/07 02:25:54 wsanchez ! 33: * Import of OSF Mach kernel (~mburg) ! 34: * ! 35: * Revision 1.1.2.4 1995/10/09 17:13:55 devrcs ! 36: * Merged RT3_SHARED version into `mainline.' ! 37: * [1995/09/13 16:17:31 joe] ! 38: * ! 39: * Revision 1.1.2.3 1995/09/18 19:13:40 devrcs ! 40: * Merged RT3_SHARED version into `mainline.' ! 41: * [1995/09/13 16:17:31 joe] ! 42: * ! 43: * Revision 1.1.2.2 1995/01/10 05:11:19 devrcs ! 44: * mk6 CR801 - new file for mk6_shared from cnmk_shared. ! 45: * [1994/12/01 21:11:51 dwm] ! 46: * ! 47: * Revision 1.1.2.1 1994/10/21 18:28:53 joe ! 48: * Initial ETAP submission ! 49: * [1994/10/20 19:31:35 joe] ! 50: * ! 51: * $EndLog$ ! 52: */ ! 53: /* ! 54: * File : etap_pool.h ! 55: * ! 56: * The start_data_node structure is primarily needed to hold ! 57: * start information for read locks (since multiple readers ! 58: * can acquire a read lock). For consistency, however, the ! 59: * structure is used for write locks as well. Each complex ! 60: * lock will maintain a linked list of these structures. ! 61: */ ! 62: ! 63: #ifndef _KERN_ETAP_POOL_H_ ! 64: #define _KERN_ETAP_POOL_H_ ! 65: ! 66: #include <kern/etap_options.h> ! 67: #include <mach/etap.h> ! 68: #include <mach/boolean.h> ! 69: ! 70: #if ETAP_LOCK_TRACE ! 71: ! 72: #include <cpus.h> ! 73: #include <mach/clock_types.h> ! 74: #include <mach/kern_return.h> ! 75: #include <kern/misc_protos.h> ! 76: ! 77: struct start_data_node { ! 78: unsigned int thread_id; /* thread id */ ! 79: etap_time_t start_hold_time; /* time of last acquisition */ ! 80: etap_time_t start_wait_time; /* time of first miss */ ! 81: unsigned int start_pc; /* pc of acquiring function */ ! 82: unsigned int end_pc; /* pc of relinquishing function */ ! 83: struct start_data_node *next; /* pointer to next list entry */ ! 84: }; ! 85: ! 86: typedef struct start_data_node* start_data_node_t; ! 87: ! 88: /* ! 89: * The start_data_node pool is statically ! 90: * allocated and privatly maintained ! 91: */ ! 92: ! 93: #define SD_POOL_ENTRIES (NCPUS * 256) ! 94: ! 95: extern void init_start_data_pool(void); ! 96: extern start_data_node_t get_start_data_node(void); ! 97: extern void free_start_data_node(start_data_node_t); ! 98: ! 99: #else /* ETAP_LOCK_TRACE */ ! 100: typedef boolean_t start_data_node_t; ! 101: #define get_start_data_node() ! 102: #define free_start_start_data_node(node) ! 103: #endif /* ETAP_LOCK_TRACE */ ! 104: ! 105: #define SD_ENTRY_NULL ((start_data_node_t) 0) ! 106: ! 107: #endif /* _KERN_ETAP_POOL_H_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.