1*df5cd018SRobert Mustacchi.\" 2*df5cd018SRobert Mustacchi.\" Copyright 2022 Oxide Computer Company 3c10c16deSRichard Lowe.\" Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved 4c10c16deSRichard Lowe.\" Copyright 1989 AT&T 5*df5cd018SRobert Mustacchi.\" 6*df5cd018SRobert Mustacchi.\" The contents of this file are subject to the terms of the 7*df5cd018SRobert Mustacchi.\" Common Development and Distribution License (the "License"). 8*df5cd018SRobert Mustacchi.\" You may not use this file except in compliance with the License. 9*df5cd018SRobert Mustacchi.\" 10*df5cd018SRobert Mustacchi.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 11*df5cd018SRobert Mustacchi.\" or http://www.opensolaris.org/os/licensing. 12*df5cd018SRobert Mustacchi.\" See the License for the specific language governing permissions 13*df5cd018SRobert Mustacchi.\" and limitations under the License. 14*df5cd018SRobert Mustacchi.\" 15*df5cd018SRobert Mustacchi.\" When distributing Covered Code, include this CDDL HEADER in each 16*df5cd018SRobert Mustacchi.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE. 17*df5cd018SRobert Mustacchi.\" If applicable, add the following below this CDDL HEADER, with the 18*df5cd018SRobert Mustacchi.\" fields enclosed by brackets "[]" replaced with your own identifying 19*df5cd018SRobert Mustacchi.\" information: Portions Copyright [yyyy] [name of copyright owner] 20*df5cd018SRobert Mustacchi.\" 21*df5cd018SRobert Mustacchi.Dd March 13, 2022 22*df5cd018SRobert Mustacchi.Dt MEMCNTL 2 23*df5cd018SRobert Mustacchi.Os 24*df5cd018SRobert Mustacchi.Sh NAME 25*df5cd018SRobert Mustacchi.Nm memcntl 26*df5cd018SRobert Mustacchi.Nd memory management control 27*df5cd018SRobert Mustacchi.Sh SYNOPSIS 28*df5cd018SRobert Mustacchi.In sys/types.h 29*df5cd018SRobert Mustacchi.In sys/mman.h 30*df5cd018SRobert Mustacchi.Ft int 31*df5cd018SRobert Mustacchi.Fo memcntl 32*df5cd018SRobert Mustacchi.Fa "void *addr" 33*df5cd018SRobert Mustacchi.Fa "size_t len" 34*df5cd018SRobert Mustacchi.Fa "int cmd" 35*df5cd018SRobert Mustacchi.Fa "void *arg" 36*df5cd018SRobert Mustacchi.Fa "int attr" 37*df5cd018SRobert Mustacchi.Fa "int mask" 38*df5cd018SRobert Mustacchi.Fc 39*df5cd018SRobert Mustacchi.Sh DESCRIPTION 40*df5cd018SRobert MustacchiThe 41*df5cd018SRobert Mustacchi.Fn memcntl 42*df5cd018SRobert Mustacchifunction allows the calling process to apply a variety of control operations 43*df5cd018SRobert Mustacchiover the address space identified by the mappings established for the address 44*df5cd018SRobert Mustacchirange [ 45*df5cd018SRobert Mustacchi.Fa addr , 46*df5cd018SRobert Mustacchi.Fa addr 47*df5cd018SRobert Mustacchi+ 48*df5cd018SRobert Mustacchi.Fa len 49*df5cd018SRobert Mustacchi). 50*df5cd018SRobert Mustacchi.Pp 51*df5cd018SRobert MustacchiThe 52*df5cd018SRobert Mustacchi.Fa addr 53*df5cd018SRobert Mustacchiargument must be a multiple of the pagesize as returned by 54*df5cd018SRobert Mustacchi.Xr sysconf 3C . 55*df5cd018SRobert MustacchiThe scope of the control operations can be further defined with additional 56*df5cd018SRobert Mustacchiselection criteria 57*df5cd018SRobert Mustacchi.Pq in the form of attributes 58*df5cd018SRobert Mustacchiaccording to the bit pattern contained in 59*df5cd018SRobert Mustacchi.Fa attr . 60*df5cd018SRobert Mustacchi.Pp 61c10c16deSRichard LoweThe following attributes specify page mapping selection criteria: 62*df5cd018SRobert Mustacchi.Bl -tag -width Ds -offset indent 63*df5cd018SRobert Mustacchi.It Dv MEMCNTL_SHARED 64c10c16deSRichard LowePage is mapped shared. 65*df5cd018SRobert Mustacchi.It Dv MEMCNTL_PRIVATE 66c10c16deSRichard LowePage is mapped private. 67*df5cd018SRobert Mustacchi.El 68*df5cd018SRobert Mustacchi.Pp 69*df5cd018SRobert MustacchiThe following attributes specify page protection selection criteria. 70*df5cd018SRobert MustacchiThe selection criteria are constructed by a bitwise OR operation on the 71*df5cd018SRobert Mustacchiattribute bits and must match exactly. 72*df5cd018SRobert Mustacchi.Bl -tag -width Ds -offset indent 73*df5cd018SRobert Mustacchi.It Dv PROT_READ 74c10c16deSRichard LowePage can be read. 75*df5cd018SRobert Mustacchi.It Dv PROT_WRITE 76c10c16deSRichard LowePage can be written. 77*df5cd018SRobert Mustacchi.It Dv PROT_EXEC 78c10c16deSRichard LowePage can be executed. 79*df5cd018SRobert Mustacchi.El 80*df5cd018SRobert Mustacchi.Pp 81c10c16deSRichard LoweThe following criteria may also be specified: 82*df5cd018SRobert Mustacchi.Bl -tag -width Ds -offset indent 83*df5cd018SRobert Mustacchi.It Dv PROC_TEXT 84c10c16deSRichard LoweProcess text. 85*df5cd018SRobert Mustacchi.It Dv PROC_DATA 86c10c16deSRichard LoweProcess data. 87*df5cd018SRobert Mustacchi.El 88*df5cd018SRobert Mustacchi.Pp 89*df5cd018SRobert MustacchiThe 90*df5cd018SRobert Mustacchi.Dv PROC_TEXT 91*df5cd018SRobert Mustacchiattribute specifies all privately mapped segments with read and execute 92*df5cd018SRobert Mustacchipermission, and the 93*df5cd018SRobert Mustacchi.Dv PROC_DATA 94*df5cd018SRobert Mustacchiattribute specifies all privately mapped segments with write permission. 95*df5cd018SRobert Mustacchi.Pp 96c10c16deSRichard LoweSelection criteria can be used to describe various abstract memory objects 97*df5cd018SRobert Mustacchiwithin the address space on which to operate. 98*df5cd018SRobert MustacchiIf an operation shall not be constrained by the selection criteria, 99*df5cd018SRobert Mustacchi.Fa attr 100*df5cd018SRobert Mustacchimust have the value 101*df5cd018SRobert Mustacchi.Sy 0 . 102*df5cd018SRobert Mustacchi.Pp 103*df5cd018SRobert MustacchiThe operation to be performed is identified by the argument 104*df5cd018SRobert Mustacchi.Fa cmd . 105*df5cd018SRobert MustacchiThe symbolic names for the operations are defined in 106*df5cd018SRobert Mustacchi.In sys/mman.h 107*df5cd018SRobert Mustacchias follows: 108*df5cd018SRobert Mustacchi.Bl -tag -width Ds -offset indent 109*df5cd018SRobert Mustacchi.It Dv MC_LOCK 110*df5cd018SRobert MustacchiLock in memory all pages in the range with attributes 111*df5cd018SRobert Mustacchi.Fa attr . 112*df5cd018SRobert MustacchiA given page may be locked multiple times through different mappings; however, 113*df5cd018SRobert Mustacchiwithin a given mapping, page locks do not nest. 114*df5cd018SRobert MustacchiMultiple lock operations on the same address in the same process will all be 115*df5cd018SRobert Mustacchiremoved with a single unlock operation. 116*df5cd018SRobert MustacchiA page locked in one process and mapped in another 117*df5cd018SRobert Mustacchi.Pq or visible through a different mapping in the locking process 118*df5cd018SRobert Mustacchiis locked in memory as long as the locking process does neither an implicit nor 119*df5cd018SRobert Mustacchiexplicit unlock operation. 120*df5cd018SRobert MustacchiIf a locked mapping is removed, or a page is deleted through file removal or 121*df5cd018SRobert Mustacchitruncation, an unlock operation is implicitly performed. 122*df5cd018SRobert MustacchiIf a writable 123*df5cd018SRobert Mustacchi.Dv MAP_PRIVATE 124*df5cd018SRobert Mustacchipage in the address range is changed, the lock will be transferred to the 125*df5cd018SRobert Mustacchiprivate page. 126*df5cd018SRobert Mustacchi.Pp 127*df5cd018SRobert MustacchiThe 128*df5cd018SRobert Mustacchi.Fa arg 129*df5cd018SRobert Mustacchiargument is not used, but must be 130*df5cd018SRobert Mustacchi.Dv NULL 131*df5cd018SRobert Mustacchito ensure compatibility with potential future enhancements. 132*df5cd018SRobert Mustacchi.It Dv MC_LOCKAS 133c10c16deSRichard LoweLock in memory all pages mapped by the address space with attributes 134*df5cd018SRobert Mustacchi.Fa attr . 135*df5cd018SRobert MustacchiThe 136*df5cd018SRobert Mustacchi.Fa addr 137*df5cd018SRobert Mustacchiand 138*df5cd018SRobert Mustacchi.Fa len 139*df5cd018SRobert Mustacchiarguments are not used, but must be 140*df5cd018SRobert Mustacchi.Dv NULL 141*df5cd018SRobert Mustacchiand 142*df5cd018SRobert Mustacchi.Sy 0 143*df5cd018SRobert Mustacchirespectively, to ensure compatibility with potential future enhancements. 144*df5cd018SRobert MustacchiThe 145*df5cd018SRobert Mustacchi.Fa arg 146*df5cd018SRobert Mustacchiargument is a bit pattern built from the flags: 147*df5cd018SRobert Mustacchi.Bl -tag -width Ds 148*df5cd018SRobert Mustacchi.It Dv MCL_CURRENT 149c10c16deSRichard LoweLock current mappings. 150*df5cd018SRobert Mustacchi.It Dv MCL_FUTURE 151c10c16deSRichard LoweLock future mappings. 152*df5cd018SRobert Mustacchi.El 153*df5cd018SRobert Mustacchi.Pp 154*df5cd018SRobert MustacchiThe value of 155*df5cd018SRobert Mustacchi.Fa arg 156*df5cd018SRobert Mustacchidetermines whether the pages to be locked are those currently mapped by the 157*df5cd018SRobert Mustacchiaddress space, those that will be mapped in the future, or both. 158*df5cd018SRobert MustacchiIf 159*df5cd018SRobert Mustacchi.Dv MCL_FUTURE 160*df5cd018SRobert Mustacchiis specified, then all mappings subsequently added to the address space will be 161*df5cd018SRobert Mustacchilocked, provided sufficient memory is available. 162*df5cd018SRobert Mustacchi.It Dv MC_SYNC 163c10c16deSRichard LoweWrite to their backing storage locations all modified pages in the range with 164*df5cd018SRobert Mustacchiattributes 165*df5cd018SRobert Mustacchi.Fa attr . 166*df5cd018SRobert MustacchiOptionally, invalidate cache copies. 167*df5cd018SRobert MustacchiThe backing storage for a modified 168*df5cd018SRobert Mustacchi.Dv MAP_SHARED 169*df5cd018SRobert Mustacchimapping is the file the page is mapped to; the backing storage for a modified 170*df5cd018SRobert Mustacchi.Dv MAP_PRIVATE 171*df5cd018SRobert Mustacchimapping is its swap area. 172*df5cd018SRobert MustacchiThe 173*df5cd018SRobert Mustacchi.Fa arg 174*df5cd018SRobert Mustacchiargument is a bit pattern built from the flags used to control the behavior of 175*df5cd018SRobert Mustacchithe operation: 176*df5cd018SRobert Mustacchi.Bl -tag -width Ds 177*df5cd018SRobert Mustacchi.It Dv MS_ASYNC 178c10c16deSRichard LowePerform asynchronous writes. 179*df5cd018SRobert MustacchiThe function returns immediately once all write operations are scheduled 180*df5cd018SRobert Mustacchi.Po unless 181*df5cd018SRobert Mustacchi.Dv MS_SYNC 182*df5cd018SRobert Mustacchiis also specified 183*df5cd018SRobert Mustacchi.Pc . 184*df5cd018SRobert Mustacchi.It Dv MS_SYNC 185c10c16deSRichard LowePerform synchronous writes. 186*df5cd018SRobert MustacchiThe function will not return until all write operations are completed. 187*df5cd018SRobert Mustacchi.It Dv MS_INVALIDATE 188*df5cd018SRobert MustacchiInvalidate all cached copies of data in memory, so that further references to 189*df5cd018SRobert Mustacchithe pages will be obtained by the system from their backing storage locations. 190*df5cd018SRobert MustacchiThis operation should be used by applications that require a memory object to be 191*df5cd018SRobert Mustacchiin a known state. 192*df5cd018SRobert Mustacchi.El 193*df5cd018SRobert Mustacchi.It Dv MC_UNLOCK 194*df5cd018SRobert MustacchiUnlock all pages in the range with attributes 195*df5cd018SRobert Mustacchi.Fa attr . 196*df5cd018SRobert MustacchiThe 197*df5cd018SRobert Mustacchi.Fa arg 198*df5cd018SRobert Mustacchiargument is not used, but must be 199*df5cd018SRobert Mustacchi.Dv NULL 200*df5cd018SRobert Mustacchito ensure compatibility with potential future enhancements. 201*df5cd018SRobert Mustacchi.It Dv MC_UNLOCKAS 202c10c16deSRichard LoweRemove address space memory locks and locks on all pages in the address space 203*df5cd018SRobert Mustacchiwith attributes 204*df5cd018SRobert Mustacchi.Fa attr . 205*df5cd018SRobert MustacchiThe 206*df5cd018SRobert Mustacchi.Fa addr , 207*df5cd018SRobert Mustacchi.Fa len , 208*df5cd018SRobert Mustacchiand 209*df5cd018SRobert Mustacchi.Fa arg 210*df5cd018SRobert Mustacchiarguments are not used, but must be 211*df5cd018SRobert Mustacchi.Dv NULL , 212*df5cd018SRobert Mustacchi0, and 213*df5cd018SRobert Mustacchi.Dv NULL , 214*df5cd018SRobert Mustacchirespectively, to ensure compatibility with potential future enhancements. 215*df5cd018SRobert Mustacchi.It Dv MC_HAT_ADVISE 216*df5cd018SRobert MustacchiAdvise system how a region of user-mapped memory will be accessed. 217*df5cd018SRobert MustacchiThe 218*df5cd018SRobert Mustacchi.Fa arg 219*df5cd018SRobert Mustacchiargument is interpreted as a 220*df5cd018SRobert Mustacchi.Dq Vt struct memcntl_mha * . 221*df5cd018SRobert MustacchiThe following members are defined in a 222*df5cd018SRobert Mustacchi.Vt struct memcntl_mha : 223*df5cd018SRobert Mustacchi.Bd -literal -offset indent 224c10c16deSRichard Loweuint_t mha_cmd; 225c10c16deSRichard Loweuint_t mha_flags; 226c10c16deSRichard Lowesize_t mha_pagesize; 227*df5cd018SRobert Mustacchi.Ed 228*df5cd018SRobert Mustacchi.Pp 229*df5cd018SRobert MustacchiThe accepted values for 230*df5cd018SRobert Mustacchi.Vt mha_cmd 231*df5cd018SRobert Mustacchiare: 232*df5cd018SRobert Mustacchi.Bd -literal -offset indent 233c10c16deSRichard LoweMHA_MAPSIZE_VA 234c10c16deSRichard LoweMHA_MAPSIZE_STACK 235c10c16deSRichard LoweMHA_MAPSIZE_BSSBRK 236*df5cd018SRobert Mustacchi.Ed 237*df5cd018SRobert Mustacchi.Pp 238*df5cd018SRobert MustacchiThe 239*df5cd018SRobert Mustacchi.Fa mha_flags 240*df5cd018SRobert Mustacchimember is reserved for future use and must always be set to 0. 241*df5cd018SRobert MustacchiThe 242*df5cd018SRobert Mustacchi.Fa mha_pagesize 243*df5cd018SRobert Mustacchimember must be a valid size as obtained from 244*df5cd018SRobert Mustacchi.Xr getpagesizes 3C 245*df5cd018SRobert Mustacchior the constant value 0 to allow the system to choose an appropriate hardware 246*df5cd018SRobert Mustacchiaddress translation mapping size. 247*df5cd018SRobert Mustacchi.Pp 248*df5cd018SRobert Mustacchi.Dv MHA_MAPSIZE_VA 249*df5cd018SRobert Mustacchisets the preferred hardware address translation mapping size of the region of 250*df5cd018SRobert Mustacchimemory from 251*df5cd018SRobert Mustacchi.Fa addr 252*df5cd018SRobert Mustacchito 253*df5cd018SRobert Mustacchi.Fa addr 254*df5cd018SRobert Mustacchi+ 255*df5cd018SRobert Mustacchi.Fa len . 256*df5cd018SRobert MustacchiBoth 257*df5cd018SRobert Mustacchi.Fa addr 258*df5cd018SRobert Mustacchiand 259*df5cd018SRobert Mustacchi.Fa len 260*df5cd018SRobert Mustacchimust be aligned to an 261*df5cd018SRobert Mustacchi.Fa mha_pagesize 262*df5cd018SRobert Mustacchiboundary. 263*df5cd018SRobert MustacchiThe entire virtual address region from 264*df5cd018SRobert Mustacchi.Fa addr 265*df5cd018SRobert Mustacchito 266*df5cd018SRobert Mustacchi.Fa addr 267*df5cd018SRobert Mustacchi+ 268*df5cd018SRobert Mustacchi.Fa len 269*df5cd018SRobert Mustacchimust not have any holes. 270*df5cd018SRobert MustacchiPermissions within each 271*df5cd018SRobert Mustacchi.Fa mha_pagesize Ns -aligned 272*df5cd018SRobert Mustacchiportion of the region must be consistent. 273*df5cd018SRobert MustacchiWhen a size of 0 is specified, the system selects an appropriate size based on 274*df5cd018SRobert Mustacchithe size and alignment of the memory region, type of processor, and other 275*df5cd018SRobert Mustacchiconsiderations. 276*df5cd018SRobert Mustacchi.Pp 277*df5cd018SRobert Mustacchi.Dv MHA_MAPSIZE_STACK 278*df5cd018SRobert Mustacchisets the preferred hardware address translation mapping size of the process main 279*df5cd018SRobert Mustacchithread stack segment. 280*df5cd018SRobert MustacchiThe 281*df5cd018SRobert Mustacchi.Fa addr 282*df5cd018SRobert Mustacchiand 283*df5cd018SRobert Mustacchi.Fa len 284*df5cd018SRobert Mustacchiarguments must be 285*df5cd018SRobert Mustacchi.Dv NULL 286*df5cd018SRobert Mustacchiand 0, respectively. 287*df5cd018SRobert Mustacchi.Pp 288*df5cd018SRobert Mustacchi.Dv MHA_MAPSIZE_BSSBRK 289*df5cd018SRobert Mustacchisets the preferred hardware address translation mapping size of the process 290*df5cd018SRobert Mustacchiheap. 291*df5cd018SRobert MustacchiThe 292*df5cd018SRobert Mustacchi.Fa addr 293*df5cd018SRobert Mustacchiand 294*df5cd018SRobert Mustacchi.Fa len 295*df5cd018SRobert Mustacchiarguments must be 296*df5cd018SRobert Mustacchi.Dv NULL 297*df5cd018SRobert Mustacchiand 0, respectively. 298*df5cd018SRobert MustacchiSee the NOTES section of the 299*df5cd018SRobert Mustacchi.Xr ppgsz 1 300c10c16deSRichard Lowemanual page for additional information on process heap alignment. 301*df5cd018SRobert Mustacchi.Pp 302*df5cd018SRobert MustacchiThe 303*df5cd018SRobert Mustacchi.Fa attr 304*df5cd018SRobert Mustacchiargument must be 0 for all 305*df5cd018SRobert Mustacchi.Dv MC_HAT_ADVISE 306*df5cd018SRobert Mustacchioperations. 307*df5cd018SRobert Mustacchi.El 308*df5cd018SRobert Mustacchi.Pp 309*df5cd018SRobert MustacchiThe 310*df5cd018SRobert Mustacchi.Fa mask 311*df5cd018SRobert Mustacchiargument must be 0; it is reserved for future use. 312*df5cd018SRobert Mustacchi.Pp 313c10c16deSRichard LoweLocks established with the lock operations are not inherited by a child process 314*df5cd018SRobert Mustacchiafter 315*df5cd018SRobert Mustacchi.Xr fork 2 . 316*df5cd018SRobert MustacchiThe 317*df5cd018SRobert Mustacchi.Fn memcntl 318*df5cd018SRobert Mustacchifunction fails if it attempts to lock more memory than a system-specific limit. 319*df5cd018SRobert Mustacchi.Pp 320c10c16deSRichard LoweDue to the potential impact on system resources, the operations 321*df5cd018SRobert Mustacchi.Dv MC_LOCKAS , 322*df5cd018SRobert Mustacchi.Dv MC_LOCK , 323*df5cd018SRobert Mustacchi.Dv MC_UNLOCKAS , 324*df5cd018SRobert Mustacchiand 325*df5cd018SRobert Mustacchi.Dv MC_UNLOCK 326*df5cd018SRobert Mustacchiare restricted to privileged processes. 327*df5cd018SRobert Mustacchi.Sh USAGE 328*df5cd018SRobert MustacchiThe 329*df5cd018SRobert Mustacchi.Fn memcntl 330*df5cd018SRobert Mustacchifunction subsumes the operations of 331*df5cd018SRobert Mustacchi.Xr plock 3C . 332*df5cd018SRobert Mustacchi.Pp 333*df5cd018SRobert Mustacchi.Dv MC_HAT_ADVISE 334*df5cd018SRobert Mustacchiis intended to improve performance of applications that use large amounts of 335*df5cd018SRobert Mustacchimemory on processors that support multiple hardware address translation mapping 336*df5cd018SRobert Mustacchisizes; however, it should be used with care. 337*df5cd018SRobert MustacchiNot all processors support all sizes with equal efficiency. 338*df5cd018SRobert MustacchiUse of larger sizes may also introduce extra overhead that could reduce 339*df5cd018SRobert Mustacchiperformance or available memory. 340*df5cd018SRobert MustacchiUsing large sizes for one application may reduce available resources for other 341*df5cd018SRobert Mustacchiapplications and result in slower system wide performance. 342*df5cd018SRobert Mustacchi.Sh RETURN VALUES 343*df5cd018SRobert MustacchiUpon successful completion, 344*df5cd018SRobert Mustacchi.Fn memcntl 345*df5cd018SRobert Mustacchireturns 346*df5cd018SRobert Mustacchi.Sy 0 . 347*df5cd018SRobert MustacchiOtherwise, it returns 348*df5cd018SRobert Mustacchi.Sy -1 349*df5cd018SRobert Mustacchiand sets 350*df5cd018SRobert Mustacchi.Va errno 351*df5cd018SRobert Mustacchito indicate an error. 352*df5cd018SRobert Mustacchi.Sh ERRORS 353*df5cd018SRobert MustacchiThe 354*df5cd018SRobert Mustacchi.Fn memcntl 355*df5cd018SRobert Mustacchifunction will fail if: 356*df5cd018SRobert Mustacchi.Bl -tag -width Er 357*df5cd018SRobert Mustacchi.It Er EAGAIN 358c10c16deSRichard LoweWhen the selection criteria match, some or all of the memory identified by the 359*df5cd018SRobert Mustacchioperation could not be locked when 360*df5cd018SRobert Mustacchi.Dv MC_LOCK 361*df5cd018SRobert Mustacchior 362*df5cd018SRobert Mustacchi.Dv MC_LOCKAS 363*df5cd018SRobert Mustacchiwas specified, some or all mappings in the address range 364*df5cd018SRobert Mustacchi.Pf [ Fa addr , 365*df5cd018SRobert Mustacchi.Fa addr 366*df5cd018SRobert Mustacchi+ 367*df5cd018SRobert Mustacchi.Fa len Ns 368*df5cd018SRobert Mustacchi) are locked for I/O when 369*df5cd018SRobert Mustacchi.Dv MC_HAT_ADVISE 370*df5cd018SRobert Mustacchiwas specified, or the system has insufficient resources when 371*df5cd018SRobert Mustacchi.Dv MC_HAT_ADVISE 372*df5cd018SRobert Mustacchiwas specified. 373*df5cd018SRobert Mustacchi.Pp 374*df5cd018SRobert MustacchiThe 375*df5cd018SRobert Mustacchi.Fa cmd 376*df5cd018SRobert Mustacchiis 377*df5cd018SRobert Mustacchi.Dv MC_LOCK 378*df5cd018SRobert Mustacchior 379*df5cd018SRobert Mustacchi.Dv MC_LOCKAS 380*df5cd018SRobert Mustacchiand locking the memory identified by this operation would exceed a limit or 381*df5cd018SRobert Mustacchiresource control on locked memory. 382*df5cd018SRobert Mustacchi.It Er EBUSY 383c10c16deSRichard LoweWhen the selection criteria match, some or all of the addresses in the range 384*df5cd018SRobert Mustacchi.Pf [ Fa addr , 385*df5cd018SRobert Mustacchi.Fa addr 386*df5cd018SRobert Mustacchi+ 387*df5cd018SRobert Mustacchi.Fa len Ns 388*df5cd018SRobert Mustacchi) are locked and 389*df5cd018SRobert Mustacchi.Dv MC_SYNC with the 390*df5cd018SRobert Mustacchi.Dv MS_INVALIDATE 391*df5cd018SRobert Mustacchioption was specified. 392*df5cd018SRobert Mustacchi.It Er EINVAL 393*df5cd018SRobert MustacchiThe 394*df5cd018SRobert Mustacchi.Fa addr 395*df5cd018SRobert Mustacchiargument specifies invalid selection criteria or is not a multiple of the page 396*df5cd018SRobert Mustacchisize as returned by 397*df5cd018SRobert Mustacchi.Xr sysconf 3C ; 398*df5cd018SRobert Mustacchithe 399*df5cd018SRobert Mustacchi.Fa addr 400*df5cd018SRobert Mustacchiand/or 401*df5cd018SRobert Mustacchi.Fa len 402*df5cd018SRobert Mustacchiargument does not have the value 0 when 403*df5cd018SRobert Mustacchi.Dv MC_LOCKAS 404*df5cd018SRobert Mustacchior 405*df5cd018SRobert Mustacchi.Dv MC_UNLOCKAS 406*df5cd018SRobert Mustacchiis specified; the 407*df5cd018SRobert Mustacchi.Fa arg 408*df5cd018SRobert Mustacchiargument is not valid for the function specified; 409*df5cd018SRobert Mustacchi.Fa mha_pagesize 410*df5cd018SRobert Mustacchior 411*df5cd018SRobert Mustacchi.Fa mha_cmd 412*df5cd018SRobert Mustacchiis invalid; or 413*df5cd018SRobert Mustacchi.Dv MC_HAT_ADVISE 414*df5cd018SRobert Mustacchiis specified and not all pages in the specified region have the same access 415*df5cd018SRobert Mustacchipermissions within the given size boundaries. 416*df5cd018SRobert Mustacchi.It Er ENOMEM 417c10c16deSRichard LoweWhen the selection criteria match, some or all of the addresses in the range 418*df5cd018SRobert Mustacchi.Pf [ Fa addr , 419*df5cd018SRobert Mustacchi.Fa addr 420*df5cd018SRobert Mustacchi+ 421*df5cd018SRobert Mustacchi.Fa len Ns 422*df5cd018SRobert Mustacchi) are invalid for the address space of a process or specify one or more pages 423*df5cd018SRobert Mustacchiwhich are not mapped. 424*df5cd018SRobert Mustacchi.It Er EPERM 425*df5cd018SRobert MustacchiThe 426*df5cd018SRobert Mustacchi.Brq Dv PRIV_PROC_LOCK_MEMORY 427*df5cd018SRobert Mustacchiprivilege is not asserted in the effective set of the calling process and 428*df5cd018SRobert Mustacchi.Dv MC_LOCK , 429*df5cd018SRobert Mustacchi.Dv MC_LOCKAS , 430*df5cd018SRobert Mustacchi.Dv MC_UNLOCK , 431*df5cd018SRobert Mustacchior 432*df5cd018SRobert Mustacchi.Dv MC_UNLOCKAS 433*df5cd018SRobert Mustacchiwas specified. 434*df5cd018SRobert Mustacchi.El 435*df5cd018SRobert Mustacchi.Sh MT-LEVEL 436*df5cd018SRobert Mustacchi.Sy MT-Safe 437*df5cd018SRobert Mustacchi.Sh SEE ALSO 438*df5cd018SRobert Mustacchi.Xr ppgsz 1 , 439*df5cd018SRobert Mustacchi.Xr fork 2 , 440*df5cd018SRobert Mustacchi.Xr mmap 2 , 441*df5cd018SRobert Mustacchi.Xr mprotect 2 , 442*df5cd018SRobert Mustacchi.Xr getpagesizes 3C , 443*df5cd018SRobert Mustacchi.Xr mlock 3C , 444*df5cd018SRobert Mustacchi.Xr mlockall 3C , 445*df5cd018SRobert Mustacchi.Xr msync 3C , 446*df5cd018SRobert Mustacchi.Xr plock 3C , 447*df5cd018SRobert Mustacchi.Xr sysconf 3C , 448*df5cd018SRobert Mustacchi.Xr attributes 7 , 449*df5cd018SRobert Mustacchi.Xr privileges 7 450