Annotation of kernel/machdep/i386/pmon_ipc.h, revision 1.1.1.1

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 */

unix.superglobalmegacorp.com

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