1*df5cd018SRobert Mustacchi#
2*df5cd018SRobert Mustacchi# This file and its contents are supplied under the terms of the
3*df5cd018SRobert Mustacchi# Common Development and Distribution License ("CDDL"), version 1.0.
4*df5cd018SRobert Mustacchi# You may only use this file in accordance with the terms of version
5*df5cd018SRobert Mustacchi# 1.0 of the CDDL.
6*df5cd018SRobert Mustacchi#
7*df5cd018SRobert Mustacchi# A full copy of the text of the CDDL should have accompanied this
8*df5cd018SRobert Mustacchi# source.  A copy of the CDDL is also available via the Internet at
9*df5cd018SRobert Mustacchi# http://www.illumos.org/license/CDDL.
10*df5cd018SRobert Mustacchi#
11*df5cd018SRobert Mustacchi
12*df5cd018SRobert Mustacchi#
13*df5cd018SRobert Mustacchi# Copyright 2022 Oxide Computer Company
14*df5cd018SRobert Mustacchi#
15*df5cd018SRobert Mustacchi
16*df5cd018SRobert Mustacchi#
17*df5cd018SRobert Mustacchi# Historical note: This header has never been part of ISO C. The
18*df5cd018SRobert Mustacchi# visibility rules were always specific to versions of POSIX/XPG.
19*df5cd018SRobert Mustacchi# Applications have assumed that these are visible even in a strict ISO
20*df5cd018SRobert Mustacchi# C environment, which we honor because this header isn't part of the
21*df5cd018SRobert Mustacchi# standard. See <sys/mman.h> for more details, but this is why you see
22*df5cd018SRobert Mustacchi# the STDC group here for things that aren't standardized, as we want
23*df5cd018SRobert Mustacchi# to make sure we don't regress that support.
24*df5cd018SRobert Mustacchi#
25*df5cd018SRobert Mustacchi
26*df5cd018SRobert Mustacchi#
27*df5cd018SRobert Mustacchi# Types
28*df5cd018SRobert Mustacchi#
29*df5cd018SRobert Mustacchi
30*df5cd018SRobert Mustacchi#
31*df5cd018SRobert Mustacchi# Values.
32*df5cd018SRobert Mustacchi#
33*df5cd018SRobert Mustacchivalue	| PROT_READ	| int	| sys/mman.h	| +ALL
34*df5cd018SRobert Mustacchivalue	| PROT_WRITE	| int	| sys/mman.h	| +ALL
35*df5cd018SRobert Mustacchivalue	| PROT_EXEC	| int	| sys/mman.h	| +ALL
36*df5cd018SRobert Mustacchivalue	| PROT_NONE	| int	| sys/mman.h	| +ALL
37*df5cd018SRobert Mustacchivalue	| MAP_SHARED	| int	| sys/mman.h	| +ALL
38*df5cd018SRobert Mustacchivalue	| MAP_PRIVATE	| int	| sys/mman.h	| +ALL
39*df5cd018SRobert Mustacchivalue	| MAP_FILE	| int	| sys/mman.h	| +ALL
40*df5cd018SRobert Mustacchivalue	| MAP_FIXED	| int	| sys/mman.h	| +ALL
41*df5cd018SRobert Mustacchivalue	| MAP_NORESERVE	| int	| sys/mman.h	| +ALL
42*df5cd018SRobert Mustacchivalue	| MAP_ANON	| int	| sys/mman.h	| +ALL
43*df5cd018SRobert Mustacchivalue	| MAP_ALIGN	| int	| sys/mman.h	| +ALL
44*df5cd018SRobert Mustacchivalue	| MAP_TEXT	| int	| sys/mman.h	| +ALL
45*df5cd018SRobert Mustacchivalue	| MAP_INITDATA	| int	| sys/mman.h	| +ALL
46*df5cd018SRobert Mustacchi
47*df5cd018SRobert Mustacchivalue	| MCL_CURRENT	| int	| sys/mman.h	| STDC POSIX-1993+ SUSv2+
48*df5cd018SRobert Mustacchivalue	| MCL_FUTURE	| int	| sys/mman.h	| STDC POSIX-1993+ SUSv2+
49*df5cd018SRobert Mustacchi
50*df5cd018SRobert Mustacchi
51*df5cd018SRobert Mustacchivalue	| POSIX_MADV_NORMAL	| int	| sys/mman.h	| STDC SUSv3+
52*df5cd018SRobert Mustacchivalue	| POSIX_MADV_RANDOM	| int	| sys/mman.h	| STDC SUSv3+
53*df5cd018SRobert Mustacchivalue	| POSIX_MADV_SEQUENTIAL	| int	| sys/mman.h	| STDC SUSv3+
54*df5cd018SRobert Mustacchivalue	| POSIX_MADV_WILLNEED	| int	| sys/mman.h	| STDC SUSv3+
55*df5cd018SRobert Mustacchivalue	| POSIX_MADV_DONTNEED	| int	| sys/mman.h	| STDC SUSv3+
56*df5cd018SRobert Mustacchi
57*df5cd018SRobert Mustacchivalue	| MAP_FAILED	| void *	| sys/mman.h	| +ALL
58*df5cd018SRobert Mustacchi
59*df5cd018SRobert Mustacchi#
60*df5cd018SRobert Mustacchi# Defines
61*df5cd018SRobert Mustacchi#
62*df5cd018SRobert Mustacchi
63*df5cd018SRobert Mustacchi#
64*df5cd018SRobert Mustacchi# Functions
65*df5cd018SRobert Mustacchi#
66*df5cd018SRobert Mustacchi
67*df5cd018SRobert Mustacchi#
68*df5cd018SRobert Mustacchi# This first group of functions basically should always be visible.
69*df5cd018SRobert Mustacchi#
70*df5cd018SRobert Mustacchifunc | mmap						|\
71*df5cd018SRobert Mustacchi	void *						|\
72*df5cd018SRobert Mustacchi	void *; size_t; int; int; int; off_t		|\
73*df5cd018SRobert Mustacchi	sys/mman.h | +ALL
74*df5cd018SRobert Mustacchi
75*df5cd018SRobert Mustacchifunc | munmap						|\
76*df5cd018SRobert Mustacchi	int						|\
77*df5cd018SRobert Mustacchi	void *; size_t					|\
78*df5cd018SRobert Mustacchi	sys/mman.h | +ALL
79*df5cd018SRobert Mustacchi
80*df5cd018SRobert Mustacchifunc | mprotect						|\
81*df5cd018SRobert Mustacchi	int						|\
82*df5cd018SRobert Mustacchi	void *; size_t; int				|\
83*df5cd018SRobert Mustacchi	sys/mman.h | +ALL
84*df5cd018SRobert Mustacchi
85*df5cd018SRobert Mustacchifunc | msync						|\
86*df5cd018SRobert Mustacchi	int						|\
87*df5cd018SRobert Mustacchi	void *; size_t; int				|\
88*df5cd018SRobert Mustacchi	sys/mman.h | +ALL
89*df5cd018SRobert Mustacchi
90*df5cd018SRobert Mustacchi
91*df5cd018SRobert Mustacchi#
92*df5cd018SRobert Mustacchi# This next group of functions were added in the realtime POSIX extensions, e.g.
93*df5cd018SRobert Mustacchi# they should be in POSIX at POSIX-1993. However, they weren't part of XPG until
94*df5cd018SRobert Mustacchi# XPG5, aka what we call SUSv2 in these tests.
95*df5cd018SRobert Mustacchi#
96*df5cd018SRobert Mustacchifunc | mlock						|\
97*df5cd018SRobert Mustacchi	int						|\
98*df5cd018SRobert Mustacchi	void *; size_t					|\
99*df5cd018SRobert Mustacchi	sys/mman.h | STDC POSIX-1993+ SUSv2+
100*df5cd018SRobert Mustacchi
101*df5cd018SRobert Mustacchifunc | munlock						|\
102*df5cd018SRobert Mustacchi	int						|\
103*df5cd018SRobert Mustacchi	void *; size_t					|\
104*df5cd018SRobert Mustacchi	sys/mman.h | STDC POSIX-1993+ SUSv2+
105*df5cd018SRobert Mustacchi
106*df5cd018SRobert Mustacchifunc | mlockall						|\
107*df5cd018SRobert Mustacchi	int						|\
108*df5cd018SRobert Mustacchi	int						|\
109*df5cd018SRobert Mustacchi	sys/mman.h | STDC POSIX-1993+ SUSv2+
110*df5cd018SRobert Mustacchi
111*df5cd018SRobert Mustacchifunc | munlockall					|\
112*df5cd018SRobert Mustacchi	int						|\
113*df5cd018SRobert Mustacchi	void						|\
114*df5cd018SRobert Mustacchi	sys/mman.h | STDC POSIX-1993+ SUSv2+
115*df5cd018SRobert Mustacchi
116*df5cd018SRobert Mustacchifunc | shm_open						|\
117*df5cd018SRobert Mustacchi	int						|\
118*df5cd018SRobert Mustacchi	const char *; int; mode_t			|\
119*df5cd018SRobert Mustacchi	sys/mman.h | STDC POSIX-1993+ SUSv2+
120*df5cd018SRobert Mustacchi
121*df5cd018SRobert Mustacchifunc | shm_unlink					|\
122*df5cd018SRobert Mustacchi	int						|\
123*df5cd018SRobert Mustacchi	const char *					|\
124*df5cd018SRobert Mustacchi	sys/mman.h | STDC POSIX-1993+ SUSv2+
125*df5cd018SRobert Mustacchi
126*df5cd018SRobert Mustacchi#
127*df5cd018SRobert Mustacchi# Added in XPG6
128*df5cd018SRobert Mustacchi#
129*df5cd018SRobert Mustacchifunc | posix_madvise					|\
130*df5cd018SRobert Mustacchi	int						|\
131*df5cd018SRobert Mustacchi	void *; size_t; int				|\
132*df5cd018SRobert Mustacchi	sys/mman.h | STDC SUSv3+
133*df5cd018SRobert Mustacchi
134*df5cd018SRobert Mustacchi#
135*df5cd018SRobert Mustacchi# Our various extensions. No visibility expected in a standards environment. We
136*df5cd018SRobert Mustacchi# do a handful of these with the assumption that as long as a few in the block
137*df5cd018SRobert Mustacchi# are OK, the rest should be.
138*df5cd018SRobert Mustacchi#
139*df5cd018SRobert Mustacchifunc | mincore						|\
140*df5cd018SRobert Mustacchi	int						|\
141*df5cd018SRobert Mustacchi	caddr_t; size_t; char *				|\
142*df5cd018SRobert Mustacchi	sys/mman.h | -ALL STDC
143*df5cd018SRobert Mustacchi
144*df5cd018SRobert Mustacchifunc | memcntl						|\
145*df5cd018SRobert Mustacchi	int						|\
146*df5cd018SRobert Mustacchi	void *; size_t; int; void *; int; int		|\
147*df5cd018SRobert Mustacchi	sys/mman.h | -ALL STDC
148*df5cd018SRobert Mustacchi
149*df5cd018SRobert Mustacchifunc | madvise						|\
150*df5cd018SRobert Mustacchi	int						|\
151*df5cd018SRobert Mustacchi	void *; size_t; int				|\
152*df5cd018SRobert Mustacchi	sys/mman.h | -ALL STDC
153*df5cd018SRobert Mustacchi
154*df5cd018SRobert Mustacchifunc | getpagesizes					|\
155*df5cd018SRobert Mustacchi	int						|\
156*df5cd018SRobert Mustacchi	size_t *; int					|\
157*df5cd018SRobert Mustacchi	sys/mman.h | -ALL STDC
158*df5cd018SRobert Mustacchi
159*df5cd018SRobert Mustacchifunc | getpagesizes2					|\
160*df5cd018SRobert Mustacchi	int						|\
161*df5cd018SRobert Mustacchi	size_t *; int					|\
162*df5cd018SRobert Mustacchi	sys/mman.h | -ALL STDC
163