1995-02-18 09:27:10 +08:00
|
|
|
/* Standard header for all Mach programs.
|
2024-01-02 02:12:26 +08:00
|
|
|
Copyright (C) 1993-2024 Free Software Foundation, Inc.
|
1997-02-15 12:31:36 +08:00
|
|
|
This file is part of the GNU C Library.
|
|
|
|
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
2001-07-06 12:58:11 +08:00
|
|
|
modify it under the terms of the GNU Lesser General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2.1 of the License, or (at your option) any later version.
|
1997-02-15 12:31:36 +08:00
|
|
|
|
|
|
|
The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
2001-07-06 12:58:11 +08:00
|
|
|
Lesser General Public License for more details.
|
1997-02-15 12:31:36 +08:00
|
|
|
|
2001-07-06 12:58:11 +08:00
|
|
|
You should have received a copy of the GNU Lesser General Public
|
2012-02-10 07:18:22 +08:00
|
|
|
License along with the GNU C Library; if not, see
|
Prefer https to http for gnu.org and fsf.org URLs
Also, change sources.redhat.com to sourceware.org.
This patch was automatically generated by running the following shell
script, which uses GNU sed, and which avoids modifying files imported
from upstream:
sed -ri '
s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g
s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g
' \
$(find $(git ls-files) -prune -type f \
! -name '*.po' \
! -name 'ChangeLog*' \
! -path COPYING ! -path COPYING.LIB \
! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \
! -path manual/texinfo.tex ! -path scripts/config.guess \
! -path scripts/config.sub ! -path scripts/install-sh \
! -path scripts/mkinstalldirs ! -path scripts/move-if-change \
! -path INSTALL ! -path locale/programs/charmap-kw.h \
! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \
! '(' -name configure \
-execdir test -f configure.ac -o -f configure.in ';' ')' \
! '(' -name preconfigure \
-execdir test -f preconfigure.ac ';' ')' \
-print)
and then by running 'make dist-prepare' to regenerate files built
from the altered files, and then executing the following to cleanup:
chmod a+x sysdeps/unix/sysv/linux/riscv/configure
# Omit irrelevant whitespace and comment-only changes,
# perhaps from a slightly-different Autoconf version.
git checkout -f \
sysdeps/csky/configure \
sysdeps/hppa/configure \
sysdeps/riscv/configure \
sysdeps/unix/sysv/linux/csky/configure
# Omit changes that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines
git checkout -f \
sysdeps/powerpc/powerpc64/ppc-mcount.S \
sysdeps/unix/sysv/linux/s390/s390-64/syscall.S
# Omit change that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline
git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-09-07 13:40:42 +08:00
|
|
|
<https://www.gnu.org/licenses/>. */
|
1995-02-18 09:27:10 +08:00
|
|
|
|
|
|
|
#ifndef _MACH_H
|
|
|
|
|
|
|
|
#define _MACH_H 1
|
|
|
|
|
2002-08-30 09:31:18 +08:00
|
|
|
#include <features.h>
|
|
|
|
|
1995-02-18 09:27:10 +08:00
|
|
|
/* Get the basic types used by Mach. */
|
|
|
|
#include <mach/mach_types.h>
|
|
|
|
|
|
|
|
/* This declares the basic variables and macros everything needs. */
|
|
|
|
#include <mach_init.h>
|
|
|
|
|
|
|
|
/* This declares all the real system call functions. */
|
|
|
|
#include <mach/mach_traps.h>
|
|
|
|
|
|
|
|
/* These are MiG-generated headers for the kernel interfaces commonly used. */
|
|
|
|
#include <mach/mach_interface.h> /* From <mach/mach.defs>. */
|
|
|
|
#include <mach/mach_port.h>
|
|
|
|
#include <mach/mach_host.h>
|
|
|
|
|
|
|
|
/* For the kernel RPCs which have system call shortcut versions,
|
|
|
|
the MiG-generated header in fact declares `CALL_rpc' rather than `CALL'.
|
|
|
|
This file declares the simple `CALL' functions. */
|
|
|
|
#include <mach-shortcuts.h>
|
|
|
|
|
|
|
|
|
|
|
|
/* Receive RPC request messages on RCV_NAME and pass them to DEMUX, which
|
|
|
|
decodes them and produces reply messages. MAX_SIZE is the maximum size
|
|
|
|
(in bytes) of the request and reply buffers. */
|
|
|
|
extern mach_msg_return_t
|
|
|
|
__mach_msg_server (boolean_t (*__demux) (mach_msg_header_t *__request,
|
|
|
|
mach_msg_header_t *__reply),
|
|
|
|
mach_msg_size_t __max_size,
|
|
|
|
mach_port_t __rcv_name),
|
|
|
|
mach_msg_server (boolean_t (*__demux) (mach_msg_header_t *__request,
|
|
|
|
mach_msg_header_t *__reply),
|
|
|
|
mach_msg_size_t __max_size,
|
|
|
|
mach_port_t __rcv_name);
|
|
|
|
|
|
|
|
/* Just like `mach_msg_server', but the OPTION and TIMEOUT parameters are
|
|
|
|
passed on to `mach_msg'. */
|
|
|
|
extern mach_msg_return_t
|
|
|
|
__mach_msg_server_timeout (boolean_t (*__demux) (mach_msg_header_t *__request,
|
|
|
|
mach_msg_header_t *__reply),
|
|
|
|
mach_msg_size_t __max_size,
|
|
|
|
mach_port_t __rcv_name,
|
|
|
|
mach_msg_option_t __option,
|
|
|
|
mach_msg_timeout_t __timeout),
|
|
|
|
mach_msg_server_timeout (boolean_t (*__demux) (mach_msg_header_t *__request,
|
|
|
|
mach_msg_header_t *__reply),
|
|
|
|
mach_msg_size_t __max_size,
|
|
|
|
mach_port_t __rcv_name,
|
|
|
|
mach_msg_option_t __option,
|
|
|
|
mach_msg_timeout_t __timeout);
|
|
|
|
|
|
|
|
|
1996-11-16 03:50:04 +08:00
|
|
|
/* Deallocate all port rights and out-of-line memory in MSG. */
|
|
|
|
extern void
|
|
|
|
__mach_msg_destroy (mach_msg_header_t *msg),
|
|
|
|
mach_msg_destroy (mach_msg_header_t *msg);
|
|
|
|
|
Remove __need macros from stdio.h and wchar.h.
wint_t is a little finicky because it might be defined by stddef.h, which
belongs to the compiler.
In addition to the _types_, a bunch of other declarations shared between
wctype.h and wchar.h are factored out to their own header.
* libio/bits/types/FILE.h, libio/bits/types/__FILE.h
* wcsmbs/bits/types/mbstate_t.h, wcsmbs/bits/types/__mbstate_t.h
* wcsmbs/bits/types/wint_t.h: New single-type definition files.
* wctype/bits/wctype-wchar.h: New file holding declarations shared
between wctype.h and wchar.h.
* libio/Makefile, wcsmbs/Makefile, wctype/Makefile:
Install them.
* include/bits/types/FILE.h, include/bits/types/__FILE.h
* include/bits/types/mbstate_t.h, include/bits/types/__mbstate_t.h
* include/bits/types/wint_t.h, include/bits/wcsmbs-wchar.h:
New wrappers.
* include/stdio.h, include/wchar.h, include/wctype.h:
No need to handle __need macros.
* grp/grp.h, gshadow/gshadow.h, hurd/hurd.h, iconv/gconv.h
* libio/stdio.h, mach/mach.h, misc/mntent.h, pwd/pwd.h
* shadow/shadow.h, stdio-common/printf.h, wcsmbs/uchar.h
* wcsmbs/wchar.h, wctype/wctype.h
* sysdeps/generic/_G_config.h, sysdeps/unix/sysv/linux/_G_config.h
Use the new files instead of __need macros.
2016-11-21 12:00:02 +08:00
|
|
|
#include <bits/types/FILE.h>
|
1995-02-18 09:27:10 +08:00
|
|
|
|
|
|
|
/* Open a stream on a Mach device. */
|
|
|
|
extern FILE *mach_open_devstream (mach_port_t device_port, const char *mode);
|
|
|
|
|
|
|
|
/* Give THREAD a stack and set it to run at PC when resumed.
|
|
|
|
If *STACK_SIZE is nonzero, that size of stack is allocated.
|
|
|
|
If *STACK_BASE is nonzero, that stack location is used.
|
|
|
|
If STACK_BASE is not null it is filled in with the chosen stack base.
|
|
|
|
If STACK_SIZE is not null it is filled in with the chosen stack size.
|
|
|
|
Regardless, an extra page of red zone is allocated off the end; this
|
2023-05-18 03:14:30 +08:00
|
|
|
is not included in *STACK_SIZE.
|
|
|
|
|
|
|
|
Mote: this function is unsuitable for setting up the thread to call a
|
|
|
|
function at PC, since the architecture ABI may impose additional
|
|
|
|
requirements beyond setting PC and stack. */
|
1995-02-18 09:27:10 +08:00
|
|
|
kern_return_t __mach_setup_thread (task_t task, thread_t thread, void *pc,
|
|
|
|
vm_address_t *stack_base,
|
|
|
|
vm_size_t *stack_size);
|
|
|
|
kern_return_t mach_setup_thread (task_t task, thread_t thread, void *pc,
|
|
|
|
vm_address_t *stack_base,
|
|
|
|
vm_size_t *stack_size);
|
|
|
|
|
2018-08-01 06:10:03 +08:00
|
|
|
/* Give THREAD a TLS area. */
|
|
|
|
kern_return_t __mach_setup_tls (thread_t thread);
|
|
|
|
kern_return_t mach_setup_tls (thread_t thread);
|
1995-02-18 09:27:10 +08:00
|
|
|
|
|
|
|
#endif /* mach.h */
|