mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 14:59:37 +01:00 
			
		
		
		
	* fix for 8801. mmap constants inconsistancy. Old constants are aliased for compat. non portable moved to OS specific units (merge)
git-svn-id: trunk@7265 -
This commit is contained in:
		
							parent
							
								
									b8c21889f9
								
							
						
					
					
						commit
						fd6f6cf7e9
					
				@ -322,7 +322,9 @@ Type
 | 
			
		||||
 
 | 
			
		||||
CONST
 | 
			
		||||
 { Constansts for MMAP }
 | 
			
		||||
{$ifdef FPC_IS_SYSTEM}
 | 
			
		||||
  MAP_PRIVATE   =2;
 | 
			
		||||
{$endif}
 | 
			
		||||
  MAP_ANONYMOUS =$1000;
 | 
			
		||||
 | 
			
		||||
    {*************************************************************************}
 | 
			
		||||
 | 
			
		||||
@ -185,6 +185,19 @@ Type
 | 
			
		||||
  function kse_release(timeout: PTimeSpec): cInt; extdecl;
 | 
			
		||||
  function kse_switchin(tmbx: PKseThrMailBox; flags: cInt): cInt; extdecl;
 | 
			
		||||
 | 
			
		||||
Const
 | 
			
		||||
 MAP_FILE         = $0000;  { map from file (default) }
 | 
			
		||||
 MAP_ANON         = $1000;  { allocated from memory, swap space }
 | 
			
		||||
   
 | 
			
		||||
 MAP_RENAME       = $0020; { Sun: rename private pages to file }
 | 
			
		||||
 MAP_NORESERVE    = $0040; { Sun: don't reserve needed swap area }
 | 
			
		||||
 //  MAP_INHERIT      = $0080; { region is retained after exec. not anymore in 5.x? }
 | 
			
		||||
 //  MAP_NOEXTEND     = $0100; { for MAP_FILE, don't change file size. not anymore in 5.x? }
 | 
			
		||||
 MAP_HASSEMAPHORE = $0200; { region may contain semaphores }
 | 
			
		||||
 MAP_STACK        = $0400; { region grows down, like a stack }
 | 
			
		||||
 MAP_NOSYNC       = $0800; { page to but do not sync underlying file}
 | 
			
		||||
 MAP_NOCORE       = $20000;{ dont include these pages in a coredump}
 | 
			
		||||
 | 
			
		||||
implementation
 | 
			
		||||
 | 
			
		||||
Uses
 | 
			
		||||
 | 
			
		||||
@ -160,6 +160,12 @@ const
 | 
			
		||||
  KD_TEXT0        = 2;    {obsolete}
 | 
			
		||||
  KD_TEXT1        = 3;    {obsolete}
 | 
			
		||||
 | 
			
		||||
  MAP_GROWSDOWN  = $100;       { stack-like segment }
 | 
			
		||||
  MAP_DENYWRITE  = $800;       { ETXTBSY }
 | 
			
		||||
  MAP_EXECUTABLE = $1000;      { mark it as an executable }
 | 
			
		||||
  MAP_LOCKED     = $2000;      { pages are locked }
 | 
			
		||||
  MAP_NORESERVE  = $4000;      { don't check for reservations }
 | 
			
		||||
 | 
			
		||||
type
 | 
			
		||||
  TCloneFunc = function(args:pointer):longint;cdecl;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -236,7 +236,9 @@ CONST
 | 
			
		||||
  S_IFSOCK= 49152; { socket }
 | 
			
		||||
 | 
			
		||||
  { Constansts for MMAP }
 | 
			
		||||
 {$IFDEF FPC_IS_SYSTEM}
 | 
			
		||||
  MAP_PRIVATE   =2;
 | 
			
		||||
 {$ENDIF}
 | 
			
		||||
  MAP_ANONYMOUS =$20;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -234,7 +234,9 @@ Const
 | 
			
		||||
 | 
			
		||||
Const
 | 
			
		||||
 { Constansts for MMAP }
 | 
			
		||||
 {$ifdef FPC_IS_SYSTEM}
 | 
			
		||||
  MAP_PRIVATE   =2;
 | 
			
		||||
 {$endif}
 | 
			
		||||
  MAP_ANONYMOUS =$100;
 | 
			
		||||
 | 
			
		||||
type
 | 
			
		||||
 | 
			
		||||
@ -47,6 +47,25 @@ Uses UnixType;
 | 
			
		||||
 | 
			
		||||
{$i genfunch.inc}
 | 
			
		||||
 | 
			
		||||
{ Fairly portable constants. I'm not going to waste time to duplicate and alias
 | 
			
		||||
them anywhere}
 | 
			
		||||
 | 
			
		||||
Const
 | 
			
		||||
  MAP_FAILED    = pointer(-1);  { mmap() has failed }
 | 
			
		||||
  MAP_SHARED    =  $1;          { Share changes }
 | 
			
		||||
  MAP_PRIVATE   =  $2;          { Changes are private }
 | 
			
		||||
  MAP_TYPE      =  $f;          { Mask for type of mapping }
 | 
			
		||||
  MAP_FIXED     = $10;          { Interpret addr exactly }
 | 
			
		||||
 | 
			
		||||
// MAP_ANON(YMOUS) is OS dependant but used in the RTL and in ostypes.inc
 | 
			
		||||
// Under BSD without -YMOUS, so alias it:
 | 
			
		||||
  MAP_ANON	= MAP_ANONYMOUS;
 | 
			
		||||
 | 
			
		||||
  PROT_READ     =  $1;          { page can be read }
 | 
			
		||||
  PROT_WRITE    =  $2;          { page can be written }
 | 
			
		||||
  PROT_EXEC     =  $4;          { page can be executed }
 | 
			
		||||
  PROT_NONE     =  $0;          { page can not be accessed }
 | 
			
		||||
 | 
			
		||||
implementation
 | 
			
		||||
 | 
			
		||||
{$ifdef hassysctl}
 | 
			
		||||
 | 
			
		||||
@ -146,46 +146,25 @@ Function  GetHostName:String;
 | 
			
		||||
     Memory functions
 | 
			
		||||
***************************}
 | 
			
		||||
 | 
			
		||||
const
 | 
			
		||||
  PROT_READ  = $1;             { page can be read }
 | 
			
		||||
  PROT_WRITE = $2;             { page can be written }
 | 
			
		||||
  PROT_EXEC  = $4;             { page can be executed }
 | 
			
		||||
  PROT_NONE  = $0;             { page can not be accessed }
 | 
			
		||||
Const
 | 
			
		||||
// The portable MAP_* and PROT_ constants are exported from unit Unix for compability.
 | 
			
		||||
 | 
			
		||||
  MAP_FAILED    = pointer(-1); { mmap() has failed }
 | 
			
		||||
  MAP_SHARED    = $1;          { Share changes }
 | 
			
		||||
//  MAP_PRIVATE   = $2;          { Changes are private }
 | 
			
		||||
  MAP_TYPE      = $f;          { Mask for type of mapping }
 | 
			
		||||
  MAP_FIXED     = $10;         { Interpret addr exactly }
 | 
			
		||||
//  MAP_ANONYMOUS = $20;         { don't use a file }
 | 
			
		||||
  PROT_READ  = baseunix.PROT_READ;             { page can be read }
 | 
			
		||||
  PROT_WRITE = baseunix.PROT_WRITE;             { page can be written }
 | 
			
		||||
  PROT_EXEC  = baseunix.PROT_EXEC;             { page can be executed }
 | 
			
		||||
  PROT_NONE  = baseunix.PROT_NONE;             { page can not be accessed }
 | 
			
		||||
 | 
			
		||||
  MAP_FAILED    = baseunix.MAP_FAILED;	      { mmap() failed }
 | 
			
		||||
  MAP_SHARED    = baseunix.MAP_SHARED;        { Share changes }
 | 
			
		||||
  MAP_PRIVATE   = baseunix.MAP_PRIVATE;       { Changes are private }
 | 
			
		||||
  MAP_TYPE      = baseunix.MAP_TYPE;          { Mask for type of mapping }
 | 
			
		||||
  MAP_FIXED     = baseunix.MAP_FIXED;         { Interpret addr exactly }
 | 
			
		||||
 | 
			
		||||
{ Flags to `msync'.  }
 | 
			
		||||
  MS_ASYNC        = 1;               { Sync memory asynchronously.  }
 | 
			
		||||
  MS_SYNC         = 4;               { Synchronous memory sync.  }
 | 
			
		||||
  MS_INVALIDATE   = 2;               { Invalidate the caches.  }
 | 
			
		||||
 | 
			
		||||
{$ifdef Linux}
 | 
			
		||||
  MAP_GROWSDOWN  = $100;       { stack-like segment }
 | 
			
		||||
  MAP_DENYWRITE  = $800;       { ETXTBSY }
 | 
			
		||||
  MAP_EXECUTABLE = $1000;      { mark it as an executable }
 | 
			
		||||
  MAP_LOCKED     = $2000;      { pages are locked }
 | 
			
		||||
  MAP_NORESERVE  = $4000;      { don't check for reservations }
 | 
			
		||||
{$else}
 | 
			
		||||
  {$ifdef FreeBSD}
 | 
			
		||||
  // FreeBSD defines MAP_COPY=MAP_PRIVATE=$2;
 | 
			
		||||
  MAP_FILE         = $0000;  { map from file (default) }
 | 
			
		||||
  MAP_ANON         = $1000;  { allocated from memory, swap space }
 | 
			
		||||
 | 
			
		||||
  MAP_RENAME       = $0020; { Sun: rename private pages to file }
 | 
			
		||||
  MAP_NORESERVE    = $0040; { Sun: don't reserve needed swap area }
 | 
			
		||||
  MAP_INHERIT      = $0080; { region is retained after exec }
 | 
			
		||||
  MAP_NOEXTEND     = $0100; { for MAP_FILE, don't change file size }
 | 
			
		||||
  MAP_HASSEMAPHORE = $0200; { region may contain semaphores }
 | 
			
		||||
  MAP_STACK        = $0400; { region grows down, like a stack }
 | 
			
		||||
  MAP_NOSYNC       = $0800; { page to but do not sync underlying file}
 | 
			
		||||
  MAP_NOCORE       = $20000;{ dont include these pages in a coredump}
 | 
			
		||||
  {$endif}
 | 
			
		||||
{$endif}
 | 
			
		||||
{**************************
 | 
			
		||||
    Utility functions
 | 
			
		||||
***************************}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user