|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 7: * Reserved. This file contains Original Code and/or Modifications of ! 8: * Original Code as defined in and that are subject to the Apple Public ! 9: * Source License Version 1.1 (the "License"). You may not use this file ! 10: * except in compliance with the License. Please obtain a copy of the ! 11: * License at http://www.apple.com/publicsource and read it before using ! 12: * this file. ! 13: * ! 14: * The Original Code and all software distributed under the License are ! 15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 19: * License for the specific language governing rights and limitations ! 20: * under the License. ! 21: * ! 22: * @APPLE_LICENSE_HEADER_END@ ! 23: */ ! 24: ! 25: /* ! 26: * Copyright (c) 1987, 1988 NeXT, Inc. ! 27: * ! 28: * HISTORY ! 29: * 28-Sep-88 Avadis Tevanian, Jr. (avie) at NeXT ! 30: * Made conditional on eventmeter option. ! 31: * ! 32: * 07-Mar-88 John Seamons (jks) at NeXT ! 33: * Created. ! 34: */ ! 35: ! 36: #ifndef _I386_EM_ ! 37: #define _I386_EM_ ! 38: ! 39: #ifdef KERNEL_BUILD ! 40: #import <eventmeter.h> ! 41: #else /* KERNEL_BUILD */ ! 42: #import <mach/features.h> ! 43: #endif /* KERNEL_BUILD */ ! 44: ! 45: #if EVENTMETER ! 46: ! 47: #import <mach/vm_statistics.h> ! 48: #import <bsd/dev/i386/video.h> ! 49: ! 50: /* key codes */ ! 51: #define EM_KEY_UP 1 ! 52: #define EM_KEY_DOWN -1 ! 53: ! 54: /* events */ ! 55: #define EM_INTR 6 ! 56: #define EM_DMA 5 ! 57: #define EM_DISK 4 ! 58: #define EM_ENET 3 ! 59: #define EM_SYSCALL 2 ! 60: #define EM_PAGER 1 ! 61: #define EM_PAGE_FAULT 0 ! 62: ! 63: /* display geometry */ ! 64: #define EM_L 30 ! 65: #define EM_R (EM_L + 1026) ! 66: #define EM_W 1024 ! 67: #define EM_Y_OD (VIDEO_H + 43) ! 68: #define EM_Y_SD (VIDEO_H + 59) ! 69: #define EM_Y_EVTOP (VIDEO_H + 25) ! 70: #define EM_Y_EVBOT (VIDEO_H + 25 + 15) ! 71: ! 72: /* states */ ! 73: #define EM_OFF 0 ! 74: #define EM_MISC 1 ! 75: #define EM_VM 2 ! 76: #define EM_NSTATE 2 ! 77: ! 78: /* video "start" values */ ! 79: #define EM_VID_NORM 0x0 ! 80: #define EM_VID_UP 0x1b ! 81: #define EM_VID_DOWN 0xe5 ! 82: ! 83: /* log graph */ ! 84: #define EM_VMPF 0 ! 85: #define EM_VMPA 1 ! 86: #define EM_VMPI 2 ! 87: #define EM_VMPW 3 ! 88: #define EM_FAULT 4 ! 89: #define EM_PAGEIN 5 ! 90: #define EM_PAGEOUT 6 ! 91: #define EM_NEVENT 7 ! 92: ! 93: /* disk */ ! 94: #define EM_OD 0 ! 95: #define EM_SD 1 ! 96: #define EM_NDISK 2 ! 97: #define EM_READ 0x30000000 ! 98: #define EM_WRITE 0x03000000 ! 99: ! 100: /* vm */ ! 101: #define EM_NVM 3 ! 102: ! 103: /* misc */ ! 104: #define EM_RATE 1 /* update rate 1 sec */ ! 105: #define EM_UPDATE (hz/EM_RATE) ! 106: ! 107: struct em { ! 108: int state; ! 109: int flags; ! 110: int event_x; ! 111: int last[EM_NEVENT]; ! 112: int disk_last[EM_NDISK]; ! 113: int disk_rw[EM_NDISK]; ! 114: vm_statistics_data_t vm_stat; ! 115: int pid[EM_NVM]; ! 116: } em; ! 117: ! 118: /* flags */ ! 119: #define EMF_LOCK 0x00000001 ! 120: #define EMF_LEDS 0x00000002 ! 121: ! 122: #define event_meter(event) \ ! 123: if (em.state == EM_MISC && (em.flags & EMF_LOCK) == 0) { \ ! 124: em.flags |= EMF_LOCK; \ ! 125: event_vline (em.event_x, EM_Y_EVTOP, EM_Y_EVBOT, \ ! 126: 0x44444444 | (3 << (((event) << 2) + 4))); \ ! 127: event_vline (em.event_x + 1, EM_Y_EVTOP, EM_Y_EVBOT, WHITE); \ ! 128: if (++em.event_x > EM_R) \ ! 129: em.event_x = EM_L; \ ! 130: em.flags &= ~EMF_LOCK; \ ! 131: } ! 132: ! 133: #else /* EVENTMETER */ ! 134: #define event_meter(event) ! 135: #endif /* EVENTMETER */ ! 136: #endif /* _I386_EM_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.