mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 18:13:01 +00:00
following improvements: - Arch/OS/platform-specific files are now included/excluded via the preprocessor, rather than via the build system. This is more consistent (we use the pre-processor for small arch/OS/platform-specific chunks within files) and makes the build system much simpler, as the sources for all programs are the same on all platforms. - Vast amounts of cut+paste Makefile.am code has been factored out. If a new platform is implemented, you need to add 11 extra Makefile.am lines. Previously it was over 100 lines. - Vex has been autotoolised. Dependency checking now works in Vex (no more incomplete builds). Parallel builds now also work. --with-vex no longer works; it's little use and a pain to support. VEX/Makefile is still in the Vex repository and gets overwritten at configure-time; it should probably be renamed Makefile-gcc to avoid possible problems, such as accidentally committing a generated Makefile. There's a bunch of hacky copying to deal with the fact that autotools don't handle same-named files in different directories. Julian plans to rename the files to avoid this problem. - Various small Makefile.am things have been made more standard automake style, eg. the use of pkginclude/pkglib prefixes instead of rolling our own. - The existing five top-level Makefile.am include files have been consolidated into three. - Most Makefile.am files now are structured more clearly, with comment headers separating sections, declarations relating to the same things next to each other, better spacing and layout, etc. - Removed the unused exp-ptrcheck/tests/x86 directory. - Renamed some XML files. - Factored out some duplicated dSYM handling code. - Split auxprogs/ into auxprogs/ and mpi/, which allowed the resulting Makefile.am files to be much more standard. - Cleaned up m_coredump by merging a bunch of files that had been overzealously separated. The net result is 630 fewer lines of Makefile.am code, or 897 if you exclude the added Makefile.vex.am, or 997 once the hacky file copying for Vex is removed. And the build system is much simpler. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10364
111 lines
3.6 KiB
C
111 lines
3.6 KiB
C
/*
|
|
* Mach Operating System
|
|
* Copyright (c) 1991,1990,1989 Carnegie Mellon University
|
|
* All Rights Reserved.
|
|
*
|
|
* Permission to use, copy, modify and distribute this software and its
|
|
* documentation is hereby granted, provided that both the copyright
|
|
* notice and this permission notice appear in all copies of the
|
|
* software, derivative works or modified versions, and any portions
|
|
* thereof, and that both notices appear in supporting documentation.
|
|
*
|
|
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
|
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
|
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
|
*
|
|
* Carnegie Mellon requests users of this software to return to
|
|
*
|
|
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
|
* School of Computer Science
|
|
* Carnegie Mellon University
|
|
* Pittsburgh PA 15213-3890
|
|
*
|
|
* any improvements or extensions that they make and grant Carnegie Mellon
|
|
* the rights to redistribute these changes.
|
|
*/
|
|
/*
|
|
* HISTORY
|
|
* $Log:mach_msg.c,v $
|
|
* Revision 2.3 92/01/23 15:22:17 rpd
|
|
* Fixed to not pass MACH_SEND_INTERRUPT and MACH_RCV_INTERRUPT
|
|
* to the kernel.
|
|
* [92/01/20 rpd]
|
|
*
|
|
* Revision 2.2 92/01/15 17:17:13 rpd
|
|
* Created from msg.c.
|
|
* [92/01/15 rpd]
|
|
*
|
|
*/
|
|
|
|
#if defined(VGO_darwin)
|
|
|
|
#include "pub_core_basics.h"
|
|
#include "pub_core_mach.h"
|
|
|
|
#include <mach/port.h>
|
|
#include <mach/message.h>
|
|
|
|
#define LIBMACH_OPTIONS (MACH_SEND_INTERRUPT|MACH_RCV_INTERRUPT)
|
|
|
|
extern mach_msg_return_t
|
|
mach_msg_trap(mach_msg_header_t *msg,
|
|
mach_msg_option_t option,
|
|
mach_msg_size_t send_size,
|
|
mach_msg_size_t rcv_size,
|
|
mach_port_t rcv_name,
|
|
mach_msg_timeout_t timeout,
|
|
mach_port_t notify);
|
|
|
|
mach_msg_return_t
|
|
mach_msg(msg, option, send_size, rcv_size, rcv_name, timeout, notify)
|
|
mach_msg_header_t *msg;
|
|
mach_msg_option_t option;
|
|
mach_msg_size_t send_size;
|
|
mach_msg_size_t rcv_size;
|
|
mach_port_t rcv_name;
|
|
mach_msg_timeout_t timeout;
|
|
mach_port_t notify;
|
|
{
|
|
mach_msg_return_t mr;
|
|
|
|
/*
|
|
* Consider the following cases:
|
|
*1) Errors in pseudo-receive (eg, MACH_SEND_INTERRUPTED
|
|
*plus special bits).
|
|
*2) Use of MACH_SEND_INTERRUPT/MACH_RCV_INTERRUPT options.
|
|
*3) RPC calls with interruptions in one/both halves.
|
|
*
|
|
* We refrain from passing the option bits that we implement
|
|
* to the kernel. This prevents their presence from inhibiting
|
|
* the kernel's fast paths (when it checks the option value).
|
|
*/
|
|
|
|
mr = mach_msg_trap(msg, option &~ LIBMACH_OPTIONS,
|
|
send_size, rcv_size, rcv_name,
|
|
timeout, notify);
|
|
if (mr == MACH_MSG_SUCCESS)
|
|
return MACH_MSG_SUCCESS;
|
|
|
|
if ((option & MACH_SEND_INTERRUPT) == 0)
|
|
while (mr == MACH_SEND_INTERRUPTED)
|
|
mr = mach_msg_trap(msg,
|
|
option &~ LIBMACH_OPTIONS,
|
|
send_size, rcv_size, rcv_name,
|
|
timeout, notify);
|
|
|
|
if ((option & MACH_RCV_INTERRUPT) == 0)
|
|
while (mr == MACH_RCV_INTERRUPTED)
|
|
mr = mach_msg_trap(msg,
|
|
option &~ (LIBMACH_OPTIONS|MACH_SEND_MSG),
|
|
0, rcv_size, rcv_name,
|
|
timeout, notify);
|
|
|
|
return mr;
|
|
}
|
|
|
|
#endif // defined(VGO_darwin)
|
|
|
|
/*--------------------------------------------------------------------*/
|
|
/*--- end ---*/
|
|
/*--------------------------------------------------------------------*/
|