Arnaud Charlet <char...@adacore.com> writes: > The above ChangeLog isn't quite in the proper format. > Also see below for a few stylistic issues to fix. > > Once fixed, the patch is OK to commit, thanks.
Here is my amended patch. I have fixed the stylistic issues in both s-osinte-kfreebsd-gnu.ads and in the original place, s-osinte-freebsd.ads. I hope the changelog entry is more correct, too. 2011-08-05 Ludovic Brenta <ludo...@ludovic-brenta.org> PR ada/49944 * s-osinte-freebsd.ads: - update copyright years. - minor reformatting. (Stack_Base_Available): correct comments. * gcc-interface/Makefile.in (kfreebsd%): use s-taprop-posix.ad[bs] instead of s-taprop-linux.ad[bs]. use s-tasinf.ad[bs] instead of s-tasinf-linux.ad[bs]. * s-osinte-kfreebsd-gnu.ads (Time_Slice_Supported): copy from s-osinte-freebsd.ads. (nanosleep): ditto. (clock_id_t, clock_gettime): ditto. (Stack_Base_Available): ditto. (Get_Page_Size): ditto. (mprotect): ditto. (pthread_mutexattr_setprotocol): ditto. (pthread_mutexattr_getprotocol): ditto. (pthread_mutexattr_setprioceiling): ditto. (pthread_mutexattr_getprioceiling): ditto. (pthread_attr_setscope): ditto. (pthread_attr_getscope): ditto. (pthread_attr_setinheritsched): ditto. (pthread_attr_getinheritsched): ditto. Index: b/src/gcc/ada/s-osinte-kfreebsd-gnu.ads =================================================================== --- a/src/gcc/ada/s-osinte-kfreebsd-gnu.ads +++ b/src/gcc/ada/s-osinte-kfreebsd-gnu.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-1994, Florida State University -- --- Copyright (C) 1995-2005,2008 Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2011, Free Software Foundation, Inc. -- -- -- -- GNARL 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- -- @@ -32,7 +32,7 @@ -- -- ------------------------------------------------------------------------------ --- This is the GNU/kFreeBSD (GNU/LinuxThreads) version of this package +-- This is the GNU/kFreeBSD PTHREADS version of this package -- This package encapsulates all direct interfaces to OS services -- that are needed by children of System. @@ -200,8 +200,24 @@ -- Time -- ---------- + Time_Slice_Supported : constant Boolean := True; + -- Indicates whether time slicing is supported (i.e SCHED_RR is supported) + type timespec is private; + function nanosleep (rqtp, rmtp : access timespec) return int; + pragma Import (C, nanosleep, "nanosleep"); + + type clockid_t is private; + + CLOCK_REALTIME : constant clockid_t; + + function clock_gettime + (clock_id : clockid_t; + tp : access timespec) + return int; + pragma Import (C, clock_gettime, "clock_gettime"); + function To_Duration (TS : timespec) return Duration; pragma Inline (To_Duration); @@ -273,6 +289,10 @@ type pthread_key_t is private; PTHREAD_CREATE_DETACHED : constant := 1; + PTHREAD_CREATE_JOINABLE : constant := 0; + + PTHREAD_SCOPE_PROCESS : constant := 0; + PTHREAD_SCOPE_SYSTEM : constant := 2; ----------- -- Stack -- @@ -296,9 +316,29 @@ Alternate_Stack_Size : constant := 0; -- No alternate signal stack is used on this platform + Stack_Base_Available : constant Boolean := False; + -- Indicates whether the stack base is available on this target + function Get_Stack_Base (thread : pthread_t) return Address; pragma Inline (Get_Stack_Base); - -- This is a dummy procedure to share some GNULLI files + -- 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; + pragma Import (C, Get_Page_Size, "getpagesize"); + -- Returns the size of a page + + PROT_NONE : constant := 0; + PROT_READ : constant := 1; + PROT_WRITE : constant := 2; + PROT_EXEC : constant := 4; + PROT_ALL : constant := PROT_READ + PROT_WRITE + PROT_EXEC; + PROT_ON : constant := PROT_NONE; + PROT_OFF : constant := PROT_ALL; + + function mprotect (addr : Address; len : size_t; prot : int) return int; + pragma Import (C, mprotect); --------------------------------------- -- Nonstandard Thread Initialization -- @@ -387,6 +427,36 @@ -- POSIX.1c Section 13 -- -------------------------- + PTHREAD_PRIO_NONE : constant := 0; + PTHREAD_PRIO_PROTECT : constant := 2; + PTHREAD_PRIO_INHERIT : constant := 1; + + function pthread_mutexattr_setprotocol + (attr : access pthread_mutexattr_t; + protocol : int) return int; + pragma Import + (C, pthread_mutexattr_setprotocol, "pthread_mutexattr_setprotocol"); + + function pthread_mutexattr_getprotocol + (attr : access pthread_mutexattr_t; + protocol : access int) return int; + pragma Import + (C, pthread_mutexattr_getprotocol, "pthread_mutexattr_getprotocol"); + + function pthread_mutexattr_setprioceiling + (attr : access pthread_mutexattr_t; + prioceiling : int) return int; + pragma Import + (C, pthread_mutexattr_setprioceiling, + "pthread_mutexattr_setprioceiling"); + + function pthread_mutexattr_getprioceiling + (attr : access pthread_mutexattr_t; + prioceiling : access int) return int; + pragma Import + (C, pthread_mutexattr_getprioceiling, + "pthread_mutexattr_getprioceiling"); + type struct_sched_param is record sched_priority : int; -- scheduling priority end record; @@ -398,6 +468,28 @@ param : access struct_sched_param) return int; pragma Import (C, pthread_setschedparam, "pthread_setschedparam"); + function pthread_attr_setscope + (attr : access pthread_attr_t; + contentionscope : int) return int; + pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope"); + + function pthread_attr_getscope + (attr : access pthread_attr_t; + contentionscope : access int) return int; + pragma Import (C, pthread_attr_getscope, "pthread_attr_getscope"); + + function pthread_attr_setinheritsched + (attr : access pthread_attr_t; + inheritsched : int) return int; + pragma Import + (C, pthread_attr_setinheritsched, "pthread_attr_setinheritsched"); + + function pthread_attr_getinheritsched + (attr : access pthread_attr_t; + inheritsched : access int) return int; + pragma Import + (C, pthread_attr_getinheritsched, "pthread_attr_getinheritsched"); + function pthread_attr_setschedpolicy (attr : access pthread_attr_t; policy : int) return int; @@ -508,6 +600,9 @@ end record; pragma Convention (C, timespec); + type clockid_t is new int; + CLOCK_REALTIME : constant clockid_t := 0; + type pthread_attr_t is record detachstate : int; schedpolicy : int; Index: b/src/gcc/ada/gcc-interface/Makefile.in =================================================================== --- a/src/gcc/ada/gcc-interface/Makefile.in +++ b/src/gcc/ada/gcc-interface/Makefile.in @@ -1125,9 +1125,7 @@ s-osinte.adb<s-osinte-posix.adb \ s-osinte.ads<s-osinte-kfreebsd-gnu.ads \ s-osprim.adb<s-osprim-posix.adb \ - s-taprop.adb<s-taprop-linux.adb \ - s-tasinf.ads<s-tasinf-linux.ads \ - s-tasinf.adb<s-tasinf-linux.adb \ + s-taprop.adb<s-taprop-posix.adb \ s-taspri.ads<s-taspri-posix.ads \ s-tpopsp.adb<s-tpopsp-posix-foreign.adb \ system.ads<system-freebsd-x86.ads @@ -1153,9 +1151,7 @@ s-osinte.adb<s-osinte-posix.adb \ s-osinte.ads<s-osinte-kfreebsd-gnu.ads \ s-osprim.adb<s-osprim-posix.adb \ - s-taprop.adb<s-taprop-linux.adb \ - s-tasinf.ads<s-tasinf-linux.ads \ - s-tasinf.adb<s-tasinf-linux.adb \ + s-taprop.adb<s-taprop-posix.adb \ s-taspri.ads<s-taspri-posix.ads \ s-tpopsp.adb<s-tpopsp-posix-foreign.adb \ system.ads<system-freebsd-x86_64.ads Index: b/src/gcc/ada/s-osinte-freebsd.ads =================================================================== --- a/src/gcc/ada/s-osinte-freebsd.ads +++ b/src/gcc/ada/s-osinte-freebsd.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-1994, Florida State University -- --- Copyright (C) 1995-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2011, Free Software Foundation, Inc. -- -- -- -- GNARL 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- -- @@ -199,7 +199,7 @@ type timespec is private; - function nanosleep (rqtp, rmtp : access timespec) return int; + function nanosleep (rqtp, rmtp : access timespec) return int; pragma Import (C, nanosleep, "nanosleep"); type clockid_t is private; @@ -313,10 +313,7 @@ -- No alternate signal stack is used on this platform Stack_Base_Available : constant Boolean := False; - -- Indicates whether the stack base is available on this target. This - -- allows us to share s-osinte.adb between all the FSU run time. Note that - -- this value can only be true if pthread_t has a complete definition that - -- corresponds exactly to the C header files. + -- Indicates whether the stack base is available on this target function Get_Stack_Base (thread : pthread_t) return Address; pragma Inline (Get_Stack_Base);