Annotation of kernel/machdep/i386/pmon_ipc.h, revision 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.