===================================================================
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
+-- Copyright (C) 1995-2015, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -301,8 +301,7 @@
-- Returns the stack base of the specified thread. Only call this function
-- when Stack_Base_Available is True.
- function Get_Page_Size return size_t;
- function Get_Page_Size return Address;
+ function Get_Page_Size return int;
pragma Import (C, Get_Page_Size, "getpagesize");
-- Returns the size of a page
===================================================================
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
+-- Copyright (C) 1995-2015, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -319,8 +319,7 @@
-- Returns the stack base of the specified thread. Only call this function
-- when Stack_Base_Available is True.
- function Get_Page_Size return size_t;
- function Get_Page_Size return Address;
+ function Get_Page_Size return int;
pragma Import (C, Get_Page_Size, "getpagesize");
-- Returns the size of a page
===================================================================
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
+-- Copyright (C) 1995-2015, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -300,8 +300,7 @@
-- Returns the stack base of the specified thread. Only call this function
-- when Stack_Base_Available is True.
- function Get_Page_Size return size_t;
- function Get_Page_Size return Address;
+ function Get_Page_Size return int;
pragma Import (C, Get_Page_Size, "getpagesize");
-- Returns the size of a page
===================================================================
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
+-- Copyright (C) 1995-2015, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -299,8 +299,7 @@
-- returns the stack base of the specified thread. Only call this function
-- when Stack_Base_Available is True.
- function Get_Page_Size return size_t;
- function Get_Page_Size return System.Address;
+ function Get_Page_Size return int;
pragma Import (C, Get_Page_Size, "getpagesize");
-- Returns the size of a page
===================================================================
@@ -317,8 +317,7 @@
return Address is (Null_Address);
-- This is a dummy procedure to share some GNULLI files
- function Get_Page_Size return size_t;
- function Get_Page_Size return Address;
+ function Get_Page_Size return int;
pragma Import (C, Get_Page_Size, "_getpagesize");
-- Returns the size of a page
===================================================================
@@ -7,7 +7,7 @@
-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
+-- Copyright (C) 1995-2015, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -332,8 +332,7 @@
-- returns the stack base of the specified thread. Only call this function
-- when Stack_Base_Available is True.
- function Get_Page_Size return size_t;
- function Get_Page_Size return Address;
+ function Get_Page_Size return int;
pragma Import (C, Get_Page_Size, "getpagesize");
-- Returns the size of a page
===================================================================
@@ -315,21 +315,20 @@
procedure Stack_Guard (T : ST.Task_Id; On : Boolean) is
Stack_Base : constant Address := Get_Stack_Base (T.Common.LL.Thread);
- Guard_Page_Address : Address;
+ Page_Size : Address;
+ Res : Interfaces.C.int;
- Res : Interfaces.C.int;
-
begin
if Stack_Base_Available then
-- Compute the guard page address
- Guard_Page_Address :=
- Stack_Base - (Stack_Base mod Get_Page_Size) + Get_Page_Size;
-
+ Page_Size := Address (Get_Page_Size);
Res :=
- mprotect (Guard_Page_Address, Get_Page_Size,
- prot => (if On then PROT_ON else PROT_OFF));
+ mprotect
+ (Stack_Base - (Stack_Base mod Page_Size) + Page_Size,
+ size_t (Page_Size),
+ prot => (if On then PROT_ON else PROT_OFF));
pragma Assert (Res = 0);
end if;
end Stack_Guard;
@@ -978,7 +977,8 @@
is
Attributes : aliased pthread_attr_t;
Adjusted_Stack_Size : Interfaces.C.size_t;
- Page_Size : constant Interfaces.C.size_t := Get_Page_Size;
+ Page_Size : constant Interfaces.C.size_t :=
+ Interfaces.C.size_t (Get_Page_Size);
Result : Interfaces.C.int;
function Thread_Body_Access is new