1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
.\" $NetBSD: memfd_create.2,v 1.3 2025/11/15 19:03:37 gutteridge Exp $
.\"
.\" Copyright (c) 2023 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Theodore Preduta.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd November 14, 2025
.Dt MEMFD_CREATE 2
.Os
.Sh NAME
.Nm memfd_create
.Nd create anonymous files
.Sh LIBRARY
.Lb libc
.Sh SYNOPSIS
.In sys/mman.h
.Ft int
.Fn memfd_create "const char *name" "unsigned int flags"
.Sh DESCRIPTION
The
.Fn memfd_create
system call returns a file descriptor to a file named
.Fa name
backed only by RAM.
Initially, the size of the file is zero.
.Pp
The length of
.Fa name
must not exceed
.Dv NAME_MAX-6
characters in length, to allow for the prefix
.Dq memfd:
to be added.
But since the file descriptor does not live on disk,
.Fa name
does not have to be unique.
.Fa name
is only intended to be used for debugging purposes and commands like
.Xr fstat 1 .
.Pp
Additionally, any of the following may be specified as the
.Fa flags :
.Bl -tag -width MFD_ALLOW_SEALING
.It Dv MFD_CLOEXEC
Set the
.Xr close 2
on
.Xr exec 3
flag.
.It Dv MFD_CLOFORK
Set the
.Xr close 2
on
.Xr fork 2
flag.
.It Dv MFD_ALLOW_SEALING
Allow adding seals to the file descriptor using the
.Xr fcntl 2
.Dv F_ADD_SEALS
command.
.El
.Pp
Otherwise, the returned file descriptor behaves the same as a regular file,
including the ability to be mapped by
.Xr mmap 2 .
.Sh RETURN VALUES
If successful, the
.Fn memfd_create
system call returns a non-negative integer.
On failure -1 is returned and
.Fa errno
is set to indicate the error.
.Sh ERRORS
.Fn memfd_create
will fail if:
.Bl -tag -width Er
.It Bq Er EFAULT
The argument
.Fa name
is
.Dv NULL
or points to invalid memory.
.It Bq Er EINVAL
The argument
.Fa flags
has any bits set other than
.Dv MFD_CLOEXEC ,
.Dv MFD_CLOFORK ,
or
.Dv MFD_ALLOW_SEALING .
.It Bq Er ENAMETOOLONG
The length of
.Fa name
appended with the prefix
.Dq memfd:
would exceed
.Dv NAME_MAX .
.It Bq Er ENFILE
The system file table is full.
.El
.Sh SEE ALSO
.Xr fcntl 2 ,
.Xr mmap 2 ,
.Xr shmget 2 ,
.Xr shm_open 3
.Sh HISTORY
.Fn memfd_create
is compatible with the Linux system call of the same name that first appeared in
Linux 3.17.
It was added in
.Nx 11.0 .
|