|
|
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:49 wsanchez ! 30: * Import of Mac OS X kernel (~semeria) ! 31: * ! 32: * Revision 1.1.1.1 1998/03/07 02:26:08 wsanchez ! 33: * Import of OSF Mach kernel (~mburg) ! 34: * ! 35: * Revision 1.1.8.1 1996/12/09 16:57:22 stephen ! 36: * nmklinux_1.0b3_shared into pmk1.1 ! 37: * [1996/12/09 11:13:16 stephen] ! 38: * ! 39: * Revision 1.1.6.1 1996/04/11 11:20:35 emcmanus ! 40: * Copied from mainline.ppc. ! 41: * [1996/04/11 08:26:36 emcmanus] ! 42: * ! 43: * hppa merge ! 44: * [1995/03/15 09:47:27 bruel] ! 45: * ! 46: * Revision 1.1.4.1 1995/11/23 17:37:28 stephen ! 47: * first powerpc checkin to mainline.ppc ! 48: * [1995/11/23 16:46:29 stephen] ! 49: * ! 50: * Revision 1.1.2.1 1995/08/25 06:50:17 stephen ! 51: * Initial checkin of files for PowerPC port ! 52: * [1995/08/23 15:05:31 stephen] ! 53: * ! 54: * Revision 1.1.2.1 1995/02/14 14:25:16 bruel ! 55: * First Revision. ! 56: * [95/01/27 bruel] ! 57: * ! 58: * $EndLog$ ! 59: */ ! 60: ! 61: #ifndef _PROFILE_MD_H ! 62: #define _PROFILE_MD_H ! 63: ! 64: /* ! 65: * Define the interfaces between the assembly language profiling support ! 66: * that is common between the kernel, mach servers, and user space library. ! 67: */ ! 68: ! 69: /* ! 70: * Integer types used. ! 71: */ ! 72: ! 73: typedef long prof_ptrint_t; /* hold either pointer or signed int */ ! 74: typedef unsigned long prof_uptrint_t; /* hold either pointer or unsigned int */ ! 75: typedef long prof_lock_t; /* lock word type */ ! 76: typedef unsigned char prof_flag_t; /* type for boolean flags */ ! 77: ! 78: /* ! 79: * Double precision counter. ! 80: */ ! 81: ! 82: typedef struct prof_cnt_t { ! 83: prof_uptrint_t low; /* low 32 bits of counter */ ! 84: prof_uptrint_t high; /* high 32 bits of counter */ ! 85: } prof_cnt_t; ! 86: ! 87: #define PROF_CNT_INC(cnt) ((++((cnt).low) == 0) ? ++((cnt).high) : 0) ! 88: #define PROF_CNT_ADD(cnt,val) (((((cnt).low + (val)) < (val)) ? ((cnt).high++) : 0), ((cnt).low += (val))) ! 89: #define PROF_CNT_LADD(cnt,val) (PROF_CNT_ADD(cnt,(val).low), (cnt).high += (val).high) ! 90: #define PROF_CNT_SUB(cnt,val) (((((cnt).low - (val)) > (cnt).low) ? ((cnt).high--) : 0), ((cnt).low -= (val))) ! 91: #define PROF_CNT_LSUB(cnt,val) (PROF_CNT_SUB(cnt,(val).low), (cnt).high -= (val).high) ! 92: ! 93: #define LPROF_ULONG_TO_CNT(cnt,val) PROF_ULONG_TO_CNT(cnt,val) ! 94: #define LPROF_CNT_INC(lp) PROF_CNT_INC(lp) ! 95: #define LPROF_CNT_ADD(lp,val) PROF_CNT_ADD(lp,val) ! 96: #define LPROF_CNT_LADD(lp,val) PROF_CNT_LADD(lp,val) ! 97: #define LPROF_CNT_SUB(lp,val) PROF_CNT_SUB(lp,val) ! 98: #define LPROF_CNT_LSUB(lp,val) PROF_CNT_LSUB(lp,val) ! 99: #define LPROF_CNT_OVERFLOW(lp,high,low) PROF_CNT_OVERFLOW(lp,high,low) ! 100: #define LPROF_CNT_TO_ULONG(lp) PROF_CNT_TO_ULONG(lp) ! 101: #define LPROF_CNT_TO_LDOUBLE(lp) PROF_CNT_TO_LDOUBLE(lp) ! 102: #define LPROF_CNT_TO_DECIMAL(buf,cnt) PROF_CNT_TO_DECIMAL(buf,cnt) ! 103: #define LPROF_CNT_EQ_0(cnt) PROF_CNT_EQ_0(cnt) ! 104: #define LPROF_CNT_NE_0(cnt) PROF_CNT_NE_0(cnt) ! 105: #define LPROF_CNT_EQ(cnt1,cnt2) PROF_CNT_EQ(cnt1,cnt2) ! 106: #define LPROF_CNT_NE(cnt1,cnt2) PROF_CNT_NE(cnt1,cnt2) ! 107: #define LPROF_CNT_GT(cnt1,cnt2) PROF_CNT_GT(cnt1,cnt2) ! 108: #define LPROF_CNT_LT(cnt1,cnt2) PROF_CNT_LT(cnt1,cnt2) ! 109: #define LPROF_CNT_DIGITS PROF_CNT_DIGITS ! 110: ! 111: ! 112: /* ! 113: * Types of the profil counter. ! 114: */ ! 115: ! 116: typedef unsigned short HISTCOUNTER; /* profil */ ! 117: typedef prof_cnt_t LHISTCOUNTER; /* lprofil */ ! 118: ! 119: struct profile_stats { /* Debugging counters */ ! 120: prof_uptrint_t major_version; /* major version number */ ! 121: prof_uptrint_t minor_version; /* minor version number */ ! 122: }; ! 123: ! 124: struct profile_md { ! 125: int major_version; /* major version number */ ! 126: int minor_version; /* minor version number */ ! 127: }; ! 128: ! 129: #define PROFILE_MAJOR_VERSION 1 ! 130: #define PROFILE_MINOR_VERSION 1 ! 131: ! 132: #endif /* _PROFILE_MD_H */ ! 133: ! 134: ! 135: ! 136: ! 137: ! 138:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.