/*
 * Copyright (c) 2003 Apple Computer, Inc. All rights reserved.
 *
 * @APPLE_LICENSE_HEADER_START@
 * 
 * This file contains Original Code and/or Modifications of Original Code
 * as defined in and that are subject to the Apple Public Source License
 * Version 2.0 (the 'License'). You may not use this file except in
 * compliance with the License. Please obtain a copy of the License at
 * http://www.opensource.apple.com/apsl/ and read it before using this
 * file.
 * 
 * The Original Code and all software distributed under the License are
 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
 * Please see the License for the specific language governing rights and
 * limitations under the License.
 * 
 * @APPLE_LICENSE_HEADER_END@
 */
#include <mach/std_types.defs>

/* mig definition for protocol between
   dyld and fix_prebinding.  The message is one-way ("simpleroutine"),
*/

subsystem _dyld_prebind 500; /* choose random starting place for messages. */

/* Specify our demux (message dispatcher/handler) that we 
   want to have control when each message comes in.  This is used
   so the server can distinguish between messages from the 
   client and from the timeout port.  */
serverdemux prebind_private;

type data_t = ^array[] of char;
type struct_timeval = struct[2] of int;
import "dyld_prebind_defs.h";

simpleroutine warnBadlyPrebound(
    server: mach_port_t;
    /* When was the program launched/dyld noticed a problem?
       Used to decide when changes may have occurred between the time
       of the problem, and the time fix_prebinding starts to work on
       the file */
    in problemTime: struct_timeval; 
    /* device and inode number for root directory.  Used to identify if 
       program was running in chrooted environment. */
    in deviceNumber: int;
    in inodeNumber: int;
    /* Name of the program that's badly prebound. */
    in badlyPreboundFile: data_t; /* null terminated string */
    /* Specify timeout value for waiting for message to be successfully sent */
    SendTime to: natural_t);
