|
|
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: * pmon_ipc.h - message structs used by performance monitor ! 27: * ! 28: * History ! 29: * ------- ! 30: * 03/21/90 dmitch ! 31: * Added PMON_SOURCE_FD. ! 32: * 18-Dec-89 dmitch ! 33: * Created. ! 34: */ ! 35: ! 36: #import <sys/types.h> ! 37: #import <sys/message.h> ! 38: #import <sys/time_stamp.h> ! 39: ! 40: /* ! 41: * Each logged event is described by one of these structs. The exact ! 42: * definitions and meanings of each field is application specific; the ! 43: * server which collects this data merely collects raw data. ! 44: * ! 45: * Warning: all fields must be int-aligned. This struct is typed as an ! 46: * array of ints during ipc to maintain word alignment. ! 47: */ ! 48: struct pmon_event { ! 49: ! 50: int source; /* where event occurred (kernel, ! 51: * DPS, etc.). */ ! 52: int event_type; /* Actual event (page out, disk read, ! 53: * NXPing(), etc.). Formatted as one ! 54: * bit out of 32; bits are in the same ! 55: * format as in the event_type argument ! 56: * to pmon_target_cntrl(). */ ! 57: struct tsval time; /* when event occurred */ ! 58: int data1; /* event-specific descriptors */ ! 59: int data2; ! 60: int data3; ! 61: ! 62: }; /* pmon_event */ ! 63: ! 64: typedef struct pmon_event *pmon_event_t; ! 65: ! 66: /* ! 67: * event message. Sent by target to pmon server and from server to client. ! 68: * ! 69: * Each message can contain up to PM_EVENT_MAX event descriptors. All data is ! 70: * inline. ! 71: * ! 72: * All event message are sent by msg_send(), NOT msg_rpc() to minimize ! 73: * ipc traffic. ! 74: */ ! 75: struct pmon_event_msg { ! 76: ! 77: msg_header_t header; /* generic message header */ ! 78: msg_type_t ne_type; /* describes num_events */ ! 79: int num_events; /* how many pmon_events in this ! 80: * message */ ! 81: msg_type_t e_type; /* describes event */ ! 82: struct pmon_event event[1]; /* first event */ ! 83: }; ! 84: ! 85: typedef struct pmon_event_msg *pmon_event_msg_t; ! 86: ! 87: /* ! 88: * control message. Sent by client to pmon server and from pmon server to ! 89: * target. All ipc done with control messages are rpc's to ensure ! 90: * integrity. ! 91: */ ! 92: #define PMON_STRING_LEN 40 ! 93: ! 94: struct pmon_cntrl_msg { ! 95: ! 96: msg_header_t header; /* generic message header */ ! 97: msg_type_t ser_type; /* describes source, event_type, ! 98: * rtn_status */ ! 99: int source; /* same as pmon_event.source. */ ! 100: int event_type; /* same as pmon_event.event_type. */ ! 101: int rtn_status; /* status returned to client */ ! 102: msg_type_t hd_type; /* describes hostname, devname */ ! 103: ! 104: /* ! 105: * the following two fields are only used for PM_CTL_ENABLE and ! 106: * PM_CTL_DISABLE messages. ! 107: */ ! 108: char hostname[PMON_STRING_LEN]; /* in ASCII */ ! 109: char devname[PMON_STRING_LEN]; /* in ASCII */ ! 110: ! 111: /* ! 112: * the following is only used for PM_CONNECT and PM_DISCONNECT ! 113: * messages. ! 114: */ ! 115: msg_type_t ep_type; /* describes event_port */ ! 116: port_name_t event_port; /* port to which events are to be ! 117: * sent. This is a server port for ! 118: * target control messages and a client ! 119: * port for connect/disconnect ! 120: * messages. */ ! 121: }; ! 122: ! 123: typedef struct pmon_cntrl_msg *pmon_cntrl_msg_t; ! 124: ! 125: /* ! 126: * msg_id values for all pmon messages ! 127: */ ! 128: #define PM_CTL_ENABLE 0x1300 /* enable events at target level */ ! 129: #define PM_CTL_DISABLE 0x1301 /* disable events at target level */ ! 130: #define PM_CTL_CONNECT 0x1302 /* send events to client */ ! 131: #define PM_CTL_DISCONNECT 0x1303 /* stop sending events to client */ ! 132: #define PM_EVENT 0x1304 /* event message */ ! 133: ! 134: /* ! 135: * Standard sources for known pmon targets ! 136: */ ! 137: #define PMON_SOURCE_NULL 0 ! 138: #define PMON_SOURCE_TEST 1 /* test target */ ! 139: ! 140: #define PMON_SOURCE_KERN 2 /* kernel (in general) */ ! 141: #define PMON_SOURCE_SCSI 3 /* scsi disk driver */ ! 142: #define PMON_SOURCE_VM 4 /* vm system */ ! 143: #define PMON_SOURCE_VFS 5 /* file system ops at the VFS level */ ! 144: #define PMON_SOURCE_UFS 6 /* ufs activity */ ! 145: #define PMON_SOURCE_NFS 7 /* nfs activity */ ! 146: #define PMON_SOURCE_IPC 8 /* ipc events */ ! 147: #define PMON_SOURCE_SCHED 9 /* scheduling activity */ ! 148: #define PMON_SOURCE_NP 10 /* printer driver */ ! 149: #define PMON_SOURCE_XP 11 /* default external pager */ ! 150: #define PMON_SOURCE_NET 12 /* networking in general */ ! 151: #define PMON_SOURCE_IP 13 /* ip */ ! 152: #define PMON_SOURCE_TCP 14 /* tcp */ ! 153: #define PMON_SOURCE_FD 15 /* floppy disk driver */ ! 154: #define PMON_SOURCE_EV 16 /* ev driver */ ! 155: ! 156: #define PMON_SOURCE_DPS 100 /* Display PostScript main thread */ ! 157: #define PMON_SOURCE_DPS_WORK 101 /* Display PostScript worker thread */ ! 158: ! 159: #define PMON_SOURCE_APPKIT 200 /* appkit, in general */ ! 160: ! 161: #define PMON_SOURCE_BAD -1 ! 162: #define PMON_SOURCES_MAX 300 ! 163: #define PMON_KERNEL_SOURCES_MAX 100 ! 164: ! 165: /* ! 166: * miscellaneous constants ! 167: */ ! 168: #define PMON_CMSG_SIZE (sizeof(struct pmon_cntrl_msg)) ! 169: ! 170: /* event msg size (hack accounts for kern_msg) */ ! 171: #define PMON_EMSG_SIZE (8192 - 44) ! 172: ! 173: #define PM_EVENT_MAX ((PMON_EMSG_SIZE - sizeof(struct pmon_event_msg)) / \ ! 174: sizeof(struct pmon_event) + 1) ! 175: ! 176: #define PMON_SERVER_NAME "pmon_server" /* netname_name_t of pmon server */ ! 177: ! 178: ! 179: /* end of pmon_ipc.h */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.