* [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads
@ 2015-10-31 15:55 Jan Sommer
2015-10-31 16:17 ` Jan Sommer
` (2 more replies)
0 siblings, 3 replies; 14+ messages in thread
From: Jan Sommer @ 2015-10-31 15:55 UTC (permalink / raw)
To: gcc-patches, devel
[-- Attachment #1: Type: text/plain, Size: 504 bytes --]
Hi,
This patch changes the Ada-declaration of the pthread-related structs such as pthread_attr_t from a field-equivalent declaration to just reserving the right amount of memory.
It is only rtems related and essentially copies the way how the types are defined in s-osinte-linux.ads. It makes the declarations independent of a particular newlib-version and fixes the bug I filed here:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68169
CC are the rtems developers for discussion.
Best regards,
Jan
[-- Attachment #2: 0001-Add-rtems-to-the-list-of-platforms-for-which-Ada-con.patch --]
[-- Type: text/x-patch, Size: 1200 bytes --]
From 1092dda339a12d3f7d437335e93dcdea540051c8 Mon Sep 17 00:00:00 2001
From: Jan Sommer <soja-lists@aries.uberspace.de>
Date: Sat, 31 Oct 2015 16:09:32 +0100
Subject: [PATCH 1/2] Add rtems to the list of platforms for which
Ada-constants of pthread-types are generated
Constant values for the sizes of pthread-types will be generated in s-oscons.ads for rtems.
Related to bugreport: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68169
---
gcc/ada/s-oscons-tmplt.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gcc/ada/s-oscons-tmplt.c b/gcc/ada/s-oscons-tmplt.c
index 5a034d5..5c26890 100644
--- a/gcc/ada/s-oscons-tmplt.c
+++ b/gcc/ada/s-oscons-tmplt.c
@@ -154,7 +154,7 @@ pragma Style_Checks ("M32766");
# include <_types.h>
#endif
-#ifdef __linux__
+#if defined (__linux__) || defined (__rtems__)
# include <pthread.h>
# include <signal.h>
#endif
@@ -1441,7 +1441,7 @@ CND(CLOCK_THREAD_CPUTIME_ID, "Thread CPU clock")
CNS(CLOCK_RT_Ada, "")
#endif
-#if defined (__APPLE__) || defined (__linux__) || defined (DUMMY)
+#if defined (__APPLE__) || defined (__linux__) || defined (__rtems__) || defined (DUMMY)
/*
-- Sizes of pthread data types
--
2.5.0
[-- Attachment #3: 0002-Update-type-definitions-to-use-the-constant-values-f.patch --]
[-- Type: text/x-patch, Size: 4857 bytes --]
From 6b445bc37bf59641f46c01ec64a248efb5ec40f4 Mon Sep 17 00:00:00 2001
From: Jan Sommer <soja-lists@aries.uberspace.de>
Date: Sat, 31 Oct 2015 16:25:14 +0100
Subject: [PATCH 2/2] Update type definitions to use the constant values from
s-oscons.ads
Currently the pthread type definitions list all fields of the corresponding c-struct in Ada.
However, at least pthread_attr_t has more fields in current newlib than in the Ada declaration here.
This change will declare the pthread-related structs in the same way as in s-osinte-linux.ads by using fixed length char-arrays with the length obtained from s-oscons.ads.
This way the declaration is independent of a certain changes in newlib.
It also replaces some hardcoded errnos with the corresponding constants from s-oscons.ads
Fixes bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68169
---
gcc/ada/s-osinte-rtems.ads | 50 ++++++++++++++++++++--------------------------
1 file changed, 22 insertions(+), 28 deletions(-)
diff --git a/gcc/ada/s-osinte-rtems.ads b/gcc/ada/s-osinte-rtems.ads
index 8b9ae12..992254f 100644
--- a/gcc/ada/s-osinte-rtems.ads
+++ b/gcc/ada/s-osinte-rtems.ads
@@ -51,6 +51,8 @@
-- It is designed to be a bottom-level (leaf) package.
with Interfaces.C;
+with System.OS_Constants;
+
package System.OS_Interface is
pragma Preelaborate;
@@ -60,6 +62,7 @@ package System.OS_Interface is
subtype rtems_id is Interfaces.C.unsigned;
subtype int is Interfaces.C.int;
+ subtype char is Interfaces.C.char;
subtype short is Interfaces.C.short;
subtype long is Interfaces.C.long;
subtype unsigned is Interfaces.C.unsigned;
@@ -68,7 +71,6 @@ package System.OS_Interface is
subtype unsigned_char is Interfaces.C.unsigned_char;
subtype plain_char is Interfaces.C.plain_char;
subtype size_t is Interfaces.C.size_t;
-
-----------
-- Errno --
-----------
@@ -76,11 +78,11 @@ package System.OS_Interface is
function errno return int;
pragma Import (C, errno, "__get_errno");
- EAGAIN : constant := 11;
- EINTR : constant := 4;
- EINVAL : constant := 22;
- ENOMEM : constant := 12;
- ETIMEDOUT : constant := 116;
+ EAGAIN : constant := System.OS_Constants.EAGAIN;
+ EINTR : constant := System.OS_Constants.EINTR;
+ EINVAL : constant := System.OS_Constants.EINVAL;
+ ENOMEM : constant := System.OS_Constants.ENOMEM;
+ ETIMEDOUT : constant := System.OS_Constants.ETIMEDOUT;
-------------
-- Signals --
@@ -448,6 +450,7 @@ package System.OS_Interface is
ss_low_priority : int;
ss_replenish_period : timespec;
ss_initial_budget : timespec;
+ sched_ss_max_repl : int;
end record;
pragma Convention (C, struct_sched_param);
@@ -621,43 +624,34 @@ private
end record;
pragma Convention (C, timespec);
- CLOCK_REALTIME : constant clockid_t := 1;
- CLOCK_MONOTONIC : constant clockid_t := 4;
+ CLOCK_REALTIME : constant clockid_t := System.OS_Constants.CLOCK_REALTIME;
+ CLOCK_MONOTONIC : constant clockid_t := System.OS_Constants.CLOCK_MONOTONIC;
+
+ subtype char_array is Interfaces.C.char_array;
type pthread_attr_t is record
- is_initialized : int;
- stackaddr : System.Address;
- stacksize : int;
- contentionscope : int;
- inheritsched : int;
- schedpolicy : int;
- schedparam : struct_sched_param;
- cputime_clocked_allowed : int;
- detatchstate : int;
+ Data : char_array (1 .. OS_Constants.PTHREAD_ATTR_SIZE);
end record;
pragma Convention (C, pthread_attr_t);
+ for pthread_attr_t'Alignment use Interfaces.C.unsigned_long'Alignment;
type pthread_condattr_t is record
- flags : int;
- process_shared : int;
+ Data : char_array (1 .. OS_Constants.PTHREAD_CONDATTR_SIZE);
end record;
pragma Convention (C, pthread_condattr_t);
+ for pthread_condattr_t'Alignment use Interfaces.C.int'Alignment;
type pthread_mutexattr_t is record
- is_initialized : int;
- process_shared : int;
- prio_ceiling : int;
- protocol : int;
- mutex_type : int;
- recursive : int;
- end record;
+ Data : char_array (1 .. OS_Constants.PTHREAD_MUTEXATTR_SIZE);
+ end record;
pragma Convention (C, pthread_mutexattr_t);
+ for pthread_mutexattr_t'Alignment use Interfaces.C.int'Alignment;
type pthread_rwlockattr_t is record
- is_initialized : int;
- process_shared : int;
+ Data : char_array (1 .. OS_Constants.PTHREAD_RWLOCKATTR_SIZE);
end record;
pragma Convention (C, pthread_rwlockattr_t);
+ for pthread_rwlockattr_t'Alignment use Interfaces.C.unsigned_long'Alignment;
type pthread_t is new rtems_id;
--
2.5.0
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads
2015-10-31 15:55 [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads Jan Sommer
@ 2015-10-31 16:17 ` Jan Sommer
2015-10-31 17:16 ` Arnaud Charlet
2015-11-01 16:47 ` Joel Sherrill
2015-11-02 11:40 ` Sebastian Huber
2 siblings, 1 reply; 14+ messages in thread
From: Jan Sommer @ 2015-10-31 16:17 UTC (permalink / raw)
To: gcc-patches; +Cc: devel
Am Saturday 31 October 2015, 16:47:35 schrieb Jan Sommer:
> Hi,
>
> This patch changes the Ada-declaration of the pthread-related structs such as pthread_attr_t from a field-equivalent declaration to just reserving the right amount of memory.
> It is only rtems related and essentially copies the way how the types are defined in s-osinte-linux.ads. It makes the declarations independent of a particular newlib-version and fixes the bug I filed here:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68169
>
> CC are the rtems developers for discussion.
>
I forgot to add: The patch is based on the current gcc 4.9 branch
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads
2015-10-31 16:17 ` Jan Sommer
@ 2015-10-31 17:16 ` Arnaud Charlet
2015-11-02 10:57 ` Jan Sommer
0 siblings, 1 reply; 14+ messages in thread
From: Arnaud Charlet @ 2015-10-31 17:16 UTC (permalink / raw)
To: Jan Sommer; +Cc: gcc-patches, devel
> > This patch changes the Ada-declaration of the pthread-related structs
> > such as pthread_attr_t from a field-equivalent declaration to just
> > reserving the right amount of memory.
> > It is only rtems related and essentially copies the way how the types are
> > defined in s-osinte-linux.ads. It makes the declarations independent
> > of a particular newlib-version and fixes the bug I filed here:
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68169
> >
> > CC are the rtems developers for discussion.
>
> I forgot to add: The patch is based on the current gcc 4.9 branch
Well you need to submit patches against trunk (and if needed backport them)
rather than the other way around.
Also, you need to provide a ChangeLog in the proper format.
Arno
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads
2015-10-31 15:55 [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads Jan Sommer
2015-10-31 16:17 ` Jan Sommer
@ 2015-11-01 16:47 ` Joel Sherrill
2015-11-02 11:40 ` Sebastian Huber
2 siblings, 0 replies; 14+ messages in thread
From: Joel Sherrill @ 2015-11-01 16:47 UTC (permalink / raw)
To: Jan Sommer; +Cc: gcc-patches, devel, charlet
On 10/31/2015 10:47 AM, Jan Sommer wrote:
> Hi,
>
> This patch changes the Ada-declaration of the pthread-related structs such as pthread_attr_t from a field-equivalent declaration to just reserving the right amount of memory.
> It is only rtems related and essentially copies the way how the types are defined in s-osinte-linux.ads. It makes the declarations independent of a particular newlib-version and fixes the bug I filed here:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68169
>
> CC are the rtems developers for discussion.
>
I am ok with this patch unless Arnaud says otherwise.
I would like to apply it to 4.9 and newer.
Comments?
> Best regards,
>
> Jan
--
-- Joel Sherrill
Ask me about RTEMS: a free RTOS
Support and Training Available
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads
2015-10-31 17:16 ` Arnaud Charlet
@ 2015-11-02 10:57 ` Jan Sommer
2015-11-02 10:59 ` Arnaud Charlet
0 siblings, 1 reply; 14+ messages in thread
From: Jan Sommer @ 2015-11-02 10:57 UTC (permalink / raw)
To: gcc-patches
Am Saturday 31 October 2015, 18:11:47 schrieb Arnaud Charlet:
> > > This patch changes the Ada-declaration of the pthread-related structs
> > > such as pthread_attr_t from a field-equivalent declaration to just
> > > reserving the right amount of memory.
> > > It is only rtems related and essentially copies the way how the types are
> > > defined in s-osinte-linux.ads. It makes the declarations independent
> > > of a particular newlib-version and fixes the bug I filed here:
> > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68169
> > >
> > > CC are the rtems developers for discussion.
> >
> > I forgot to add: The patch is based on the current gcc 4.9 branch
>
> Well you need to submit patches against trunk (and if needed backport them)
> rather than the other way around.
>
> Also, you need to provide a ChangeLog in the proper format.
>
Ok, I don't have time today. I will make a patch against trunk and will try again with the correct format tomorrow.
How does the backporting work?
It's my first contribution to gcc, so bare with me ;-)
Best regards,
Jan
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads
2015-11-02 10:57 ` Jan Sommer
@ 2015-11-02 10:59 ` Arnaud Charlet
0 siblings, 0 replies; 14+ messages in thread
From: Arnaud Charlet @ 2015-11-02 10:59 UTC (permalink / raw)
To: Jan Sommer; +Cc: gcc-patches
> Ok, I don't have time today. I will make a patch against trunk and will try
> again with the correct format tomorrow.
> How does the backporting work?
> It's my first contribution to gcc, so bare with me ;-)
See https://gcc.gnu.org/contribute.html for details.
Arno
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads
2015-10-31 15:55 [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads Jan Sommer
2015-10-31 16:17 ` Jan Sommer
2015-11-01 16:47 ` Joel Sherrill
@ 2015-11-02 11:40 ` Sebastian Huber
2015-11-03 11:36 ` Jan Sommer
2 siblings, 1 reply; 14+ messages in thread
From: Sebastian Huber @ 2015-11-02 11:40 UTC (permalink / raw)
To: Jan Sommer, gcc-patches, devel
On 31/10/15 16:47, Jan Sommer wrote:
> Hi,
>
> This patch changes the Ada-declaration of the pthread-related structs such as pthread_attr_t from a field-equivalent declaration to just reserving the right amount of memory.
> It is only rtems related and essentially copies the way how the types are defined in s-osinte-linux.ads. It makes the declarations independent of a particular newlib-version and fixes the bug I filed here:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68169
[...]
> -------------
> -- Signals --
> @@ -448,6 +450,7 @@ package System.OS_Interface is
> ss_low_priority : int;
> ss_replenish_period : timespec;
> ss_initial_budget : timespec;
> + sched_ss_max_repl : int;
> end record;
> pragma Convention (C, struct_sched_param);
Why is this structure not changed to an opaque size + alignment type
like the other structures?
>
> @@ -621,43 +624,34 @@ private
> end record;
> pragma Convention (C, timespec);
>
> - CLOCK_REALTIME : constant clockid_t := 1;
> - CLOCK_MONOTONIC : constant clockid_t := 4;
> + CLOCK_REALTIME : constant clockid_t := System.OS_Constants.CLOCK_REALTIME;
> + CLOCK_MONOTONIC : constant clockid_t := System.OS_Constants.CLOCK_MONOTONIC;
> +
> + subtype char_array is Interfaces.C.char_array;
>
> type pthread_attr_t is record
> - is_initialized : int;
> - stackaddr : System.Address;
> - stacksize : int;
> - contentionscope : int;
> - inheritsched : int;
> - schedpolicy : int;
> - schedparam : struct_sched_param;
> - cputime_clocked_allowed : int;
> - detatchstate : int;
> + Data : char_array (1 .. OS_Constants.PTHREAD_ATTR_SIZE);
> end record;
> pragma Convention (C, pthread_attr_t);
> + for pthread_attr_t'Alignment use Interfaces.C.unsigned_long'Alignment;
>
> type pthread_condattr_t is record
> - flags : int;
> - process_shared : int;
> + Data : char_array (1 .. OS_Constants.PTHREAD_CONDATTR_SIZE);
> end record;
> pragma Convention (C, pthread_condattr_t);
> + for pthread_condattr_t'Alignment use Interfaces.C.int'Alignment;
>
> type pthread_mutexattr_t is record
> - is_initialized : int;
> - process_shared : int;
> - prio_ceiling : int;
> - protocol : int;
> - mutex_type : int;
> - recursive : int;
> - end record;
> + Data : char_array (1 .. OS_Constants.PTHREAD_MUTEXATTR_SIZE);
> + end record;
> pragma Convention (C, pthread_mutexattr_t);
> + for pthread_mutexattr_t'Alignment use Interfaces.C.int'Alignment;
[...]
The alignment is sometimes int and sometimes unsigned long. I would
change this to long long or double throughout, e.g. if we change the CPU
mask type to uint64_t, then the alignment specified here is no longer
correct.
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads
2015-11-02 11:40 ` Sebastian Huber
@ 2015-11-03 11:36 ` Jan Sommer
0 siblings, 0 replies; 14+ messages in thread
From: Jan Sommer @ 2015-11-03 11:36 UTC (permalink / raw)
To: Sebastian Huber; +Cc: gcc-patches, devel
Am Monday 02 November 2015, 12:39:57 schrieb Sebastian Huber:
>
> On 31/10/15 16:47, Jan Sommer wrote:
> > Hi,
> >
> > This patch changes the Ada-declaration of the pthread-related structs such as pthread_attr_t from a field-equivalent declaration to just reserving the right amount of memory.
> > It is only rtems related and essentially copies the way how the types are defined in s-osinte-linux.ads. It makes the declarations independent of a particular newlib-version and fixes the bug I filed here:
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68169
>
> [...]
>
> > -------------
> > -- Signals --
> > @@ -448,6 +450,7 @@ package System.OS_Interface is
> > ss_low_priority : int;
> > ss_replenish_period : timespec;
> > ss_initial_budget : timespec;
> > + sched_ss_max_repl : int;
> > end record;
> > pragma Convention (C, struct_sched_param);
>
> Why is this structure not changed to an opaque size + alignment type
> like the other structures?
>
There is no corresponding size constant in s-oscons.ads. The linux version of s-osinte.ads uses a record declaration too.
> >
> > @@ -621,43 +624,34 @@ private
> > end record;
> > pragma Convention (C, timespec);
> >
> > - CLOCK_REALTIME : constant clockid_t := 1;
> > - CLOCK_MONOTONIC : constant clockid_t := 4;
> > + CLOCK_REALTIME : constant clockid_t := System.OS_Constants.CLOCK_REALTIME;
> > + CLOCK_MONOTONIC : constant clockid_t := System.OS_Constants.CLOCK_MONOTONIC;
> > +
> > + subtype char_array is Interfaces.C.char_array;
> >
> > type pthread_attr_t is record
> > - is_initialized : int;
> > - stackaddr : System.Address;
> > - stacksize : int;
> > - contentionscope : int;
> > - inheritsched : int;
> > - schedpolicy : int;
> > - schedparam : struct_sched_param;
> > - cputime_clocked_allowed : int;
> > - detatchstate : int;
> > + Data : char_array (1 .. OS_Constants.PTHREAD_ATTR_SIZE);
> > end record;
> > pragma Convention (C, pthread_attr_t);
> > + for pthread_attr_t'Alignment use Interfaces.C.unsigned_long'Alignment;
> >
> > type pthread_condattr_t is record
> > - flags : int;
> > - process_shared : int;
> > + Data : char_array (1 .. OS_Constants.PTHREAD_CONDATTR_SIZE);
> > end record;
> > pragma Convention (C, pthread_condattr_t);
> > + for pthread_condattr_t'Alignment use Interfaces.C.int'Alignment;
> >
> > type pthread_mutexattr_t is record
> > - is_initialized : int;
> > - process_shared : int;
> > - prio_ceiling : int;
> > - protocol : int;
> > - mutex_type : int;
> > - recursive : int;
> > - end record;
> > + Data : char_array (1 .. OS_Constants.PTHREAD_MUTEXATTR_SIZE);
> > + end record;
> > pragma Convention (C, pthread_mutexattr_t);
> > + for pthread_mutexattr_t'Alignment use Interfaces.C.int'Alignment;
> [...]
>
> The alignment is sometimes int and sometimes unsigned long. I would
> change this to long long or double throughout, e.g. if we change the CPU
> mask type to uint64_t, then the alignment specified here is no longer
> correct.
>
Thanks for the tip. I will change that.
Best regards,
Jan
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads
2015-11-04 11:47 ` Jan Sommer
@ 2015-11-04 12:21 ` Arnaud Charlet
0 siblings, 0 replies; 14+ messages in thread
From: Arnaud Charlet @ 2015-11-04 12:21 UTC (permalink / raw)
To: Jan Sommer; +Cc: gcc-patches, sebastian.huber, joel.sherrill, devel
> > > > Your ChangeLog entry is not in the proper format, see sections 6.8.1
> > > > and
> > > > 6.8.2 from http://www.gnu.org/prep/standards/standards.html
> > > >
> > > > The diff itself is OK.
> > >
> > > Ok, fixed this. See the new diff below.
> >
> > This is now OK, you can go ahead and commit it.
> >
>
> Attached are the 2 final patches. One for trunk and the other one for both the
> gcc-5-branch and the gcc-4_9-branch.
> I don't have write access, so one of you would need to commit it.
I'll let Joel take care of that, and verify that you have your paperwork with
the FSF for copyright assignment in place (as per
https://gcc.gnu.org/contribute.html)
Arno
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads
2015-11-03 19:13 ` Arnaud Charlet
@ 2015-11-04 11:47 ` Jan Sommer
2015-11-04 12:21 ` Arnaud Charlet
0 siblings, 1 reply; 14+ messages in thread
From: Jan Sommer @ 2015-11-04 11:47 UTC (permalink / raw)
To: gcc-patches; +Cc: Arnaud Charlet, sebastian.huber, joel.sherrill, devel
[-- Attachment #1: Type: text/plain, Size: 547 bytes --]
Am Tuesday 03 November 2015, 20:13:50 schrieb Arnaud Charlet:
> > > Your ChangeLog entry is not in the proper format, see sections 6.8.1 and
> > > 6.8.2 from http://www.gnu.org/prep/standards/standards.html
> > >
> > > The diff itself is OK.
> >
> > Ok, fixed this. See the new diff below.
>
> This is now OK, you can go ahead and commit it.
>
Attached are the 2 final patches. One for trunk and the other one for both the gcc-5-branch and the gcc-4_9-branch.
I don't have write access, so one of you would need to commit it.
Thanks,
Jan
[-- Attachment #2: ada-68169_4.9-5.x.diff --]
[-- Type: text/x-patch, Size: 5382 bytes --]
Index: gcc/ada/ChangeLog
===================================================================
--- gcc/ada/ChangeLog (Revision 229739)
+++ gcc/ada/ChangeLog (Arbeitskopie)
@@ -1,3 +1,9 @@
+2015-11-03 Jan Sommer <soja-lists@aries.uberspace.de>
+
+ * s-oscons-tmplt.c: Generate pthread constants for RTEMS
+ * s-osinte-rtems.ads: Declare pthread structs as opaque types in Ada
+ Fixes PR ada/68169
+
2015-10-09 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/Make-lang.in: Make sure that GNAT1_OBJS and not just
Index: gcc/ada/s-oscons-tmplt.c
===================================================================
--- gcc/ada/s-oscons-tmplt.c (Revision 229739)
+++ gcc/ada/s-oscons-tmplt.c (Arbeitskopie)
@@ -157,7 +157,7 @@ pragma Style_Checks ("M32766");
# include <_types.h>
#endif
-#ifdef __linux__
+#if defined (__linux__) || defined (__rtems__)
# include <pthread.h>
# include <signal.h>
#endif
@@ -1456,7 +1456,8 @@ CND(CLOCK_THREAD_CPUTIME_ID, "Thread CPU clock")
CNS(CLOCK_RT_Ada, "")
#endif
-#if defined (__APPLE__) || defined (__linux__) || defined (DUMMY)
+#if defined (__APPLE__) || defined (__linux__) || defined (__rtems__) || \
+ defined (DUMMY)
/*
-- Sizes of pthread data types
@@ -1499,7 +1500,7 @@ CND(PTHREAD_RWLOCKATTR_SIZE, "pthread_rwlockattr_t
CND(PTHREAD_RWLOCK_SIZE, "pthread_rwlock_t")
CND(PTHREAD_ONCE_SIZE, "pthread_once_t")
-#endif /* __APPLE__ || __linux__ */
+#endif /* __APPLE__ || __linux__ || __rtems__*/
/*
Index: gcc/ada/s-osinte-rtems.ads
===================================================================
--- gcc/ada/s-osinte-rtems.ads (Revision 229739)
+++ gcc/ada/s-osinte-rtems.ads (Arbeitskopie)
@@ -51,6 +51,8 @@
-- It is designed to be a bottom-level (leaf) package.
with Interfaces.C;
+with System.OS_Constants;
+
package System.OS_Interface is
pragma Preelaborate;
@@ -60,6 +62,7 @@ package System.OS_Interface is
subtype rtems_id is Interfaces.C.unsigned;
subtype int is Interfaces.C.int;
+ subtype char is Interfaces.C.char;
subtype short is Interfaces.C.short;
subtype long is Interfaces.C.long;
subtype unsigned is Interfaces.C.unsigned;
@@ -68,7 +71,6 @@ package System.OS_Interface is
subtype unsigned_char is Interfaces.C.unsigned_char;
subtype plain_char is Interfaces.C.plain_char;
subtype size_t is Interfaces.C.size_t;
-
-----------
-- Errno --
-----------
@@ -76,11 +78,11 @@ package System.OS_Interface is
function errno return int;
pragma Import (C, errno, "__get_errno");
- EAGAIN : constant := 11;
- EINTR : constant := 4;
- EINVAL : constant := 22;
- ENOMEM : constant := 12;
- ETIMEDOUT : constant := 116;
+ EAGAIN : constant := System.OS_Constants.EAGAIN;
+ EINTR : constant := System.OS_Constants.EINTR;
+ EINVAL : constant := System.OS_Constants.EINVAL;
+ ENOMEM : constant := System.OS_Constants.ENOMEM;
+ ETIMEDOUT : constant := System.OS_Constants.ETIMEDOUT;
-------------
-- Signals --
@@ -448,6 +450,7 @@ package System.OS_Interface is
ss_low_priority : int;
ss_replenish_period : timespec;
ss_initial_budget : timespec;
+ sched_ss_max_repl : int;
end record;
pragma Convention (C, struct_sched_param);
@@ -621,43 +624,34 @@ private
end record;
pragma Convention (C, timespec);
- CLOCK_REALTIME : constant clockid_t := 1;
- CLOCK_MONOTONIC : constant clockid_t := 4;
+ CLOCK_REALTIME : constant clockid_t := System.OS_Constants.CLOCK_REALTIME;
+ CLOCK_MONOTONIC : constant clockid_t := System.OS_Constants.CLOCK_MONOTONIC;
+ subtype char_array is Interfaces.C.char_array;
+
type pthread_attr_t is record
- is_initialized : int;
- stackaddr : System.Address;
- stacksize : int;
- contentionscope : int;
- inheritsched : int;
- schedpolicy : int;
- schedparam : struct_sched_param;
- cputime_clocked_allowed : int;
- detatchstate : int;
+ Data : char_array (1 .. OS_Constants.PTHREAD_ATTR_SIZE);
end record;
pragma Convention (C, pthread_attr_t);
+ for pthread_attr_t'Alignment use Interfaces.C.double'Alignment;
type pthread_condattr_t is record
- flags : int;
- process_shared : int;
+ Data : char_array (1 .. OS_Constants.PTHREAD_CONDATTR_SIZE);
end record;
pragma Convention (C, pthread_condattr_t);
+ for pthread_condattr_t'Alignment use Interfaces.C.double'Alignment;
type pthread_mutexattr_t is record
- is_initialized : int;
- process_shared : int;
- prio_ceiling : int;
- protocol : int;
- mutex_type : int;
- recursive : int;
- end record;
+ Data : char_array (1 .. OS_Constants.PTHREAD_MUTEXATTR_SIZE);
+ end record;
pragma Convention (C, pthread_mutexattr_t);
+ for pthread_mutexattr_t'Alignment use Interfaces.C.double'Alignment;
type pthread_rwlockattr_t is record
- is_initialized : int;
- process_shared : int;
+ Data : char_array (1 .. OS_Constants.PTHREAD_RWLOCKATTR_SIZE);
end record;
pragma Convention (C, pthread_rwlockattr_t);
+ for pthread_rwlockattr_t'Alignment use Interfaces.C.double'Alignment;
type pthread_t is new rtems_id;
[-- Attachment #3: ada-68169_trunk.diff --]
[-- Type: text/x-patch, Size: 5396 bytes --]
Index: gcc/ada/ChangeLog
===================================================================
--- gcc/ada/ChangeLog (Revision 229735)
+++ gcc/ada/ChangeLog (Arbeitskopie)
@@ -1,3 +1,9 @@
+2015-11-03 Jan Sommer <soja-lists@aries.uberspace.de>
+
+ * s-oscons-tmplt.c: Generate pthread constants for RTEMS
+ * s-osinte-rtems.ads: Declare pthread structs as opaque types in Ada
+ Fixes PR ada/68169
+
2015-10-29 Andrew MacLeod <amacleod@redhat.com>
* gcc-interface/decl.c: Reorder #include's and remove duplicates.
Index: gcc/ada/s-oscons-tmplt.c
===================================================================
--- gcc/ada/s-oscons-tmplt.c (Revision 229735)
+++ gcc/ada/s-oscons-tmplt.c (Arbeitskopie)
@@ -157,7 +157,7 @@ pragma Style_Checks ("M32766");
# include <_types.h>
#endif
-#if defined (__linux__) || defined (__ANDROID__)
+#if defined (__linux__) || defined (__ANDROID__) || defined (__rtems__)
# include <pthread.h>
# include <signal.h>
#endif
@@ -1458,7 +1458,7 @@ CNS(CLOCK_RT_Ada, "")
#endif
#if defined (__APPLE__) || defined (__linux__) || defined (__ANDROID__) \
- || defined (DUMMY)
+ || defined (__rtems__) || defined (DUMMY)
/*
-- Sizes of pthread data types
@@ -1501,7 +1501,7 @@ CND(PTHREAD_RWLOCKATTR_SIZE, "pthread_rwlockattr_t
CND(PTHREAD_RWLOCK_SIZE, "pthread_rwlock_t")
CND(PTHREAD_ONCE_SIZE, "pthread_once_t")
-#endif /* __APPLE__ || __linux__ || __ANDROID__ */
+#endif /* __APPLE__ || __linux__ || __ANDROID__ || __rtems__ */
/*
Index: gcc/ada/s-osinte-rtems.ads
===================================================================
--- gcc/ada/s-osinte-rtems.ads (Revision 229735)
+++ gcc/ada/s-osinte-rtems.ads (Arbeitskopie)
@@ -51,6 +51,8 @@
-- It is designed to be a bottom-level (leaf) package.
with Interfaces.C;
+with System.OS_Constants;
+
package System.OS_Interface is
pragma Preelaborate;
@@ -60,6 +62,7 @@ package System.OS_Interface is
subtype rtems_id is Interfaces.C.unsigned;
subtype int is Interfaces.C.int;
+ subtype char is Interfaces.C.char;
subtype short is Interfaces.C.short;
subtype long is Interfaces.C.long;
subtype unsigned is Interfaces.C.unsigned;
@@ -68,7 +71,6 @@ package System.OS_Interface is
subtype unsigned_char is Interfaces.C.unsigned_char;
subtype plain_char is Interfaces.C.plain_char;
subtype size_t is Interfaces.C.size_t;
-
-----------
-- Errno --
-----------
@@ -76,11 +78,11 @@ package System.OS_Interface is
function errno return int;
pragma Import (C, errno, "__get_errno");
- EAGAIN : constant := 11;
- EINTR : constant := 4;
- EINVAL : constant := 22;
- ENOMEM : constant := 12;
- ETIMEDOUT : constant := 116;
+ EAGAIN : constant := System.OS_Constants.EAGAIN;
+ EINTR : constant := System.OS_Constants.EINTR;
+ EINVAL : constant := System.OS_Constants.EINVAL;
+ ENOMEM : constant := System.OS_Constants.ENOMEM;
+ ETIMEDOUT : constant := System.OS_Constants.ETIMEDOUT;
-------------
-- Signals --
@@ -448,6 +450,7 @@ package System.OS_Interface is
ss_low_priority : int;
ss_replenish_period : timespec;
ss_initial_budget : timespec;
+ sched_ss_max_repl : int;
end record;
pragma Convention (C, struct_sched_param);
@@ -621,43 +624,34 @@ private
end record;
pragma Convention (C, timespec);
- CLOCK_REALTIME : constant clockid_t := 1;
- CLOCK_MONOTONIC : constant clockid_t := 4;
+ CLOCK_REALTIME : constant clockid_t := System.OS_Constants.CLOCK_REALTIME;
+ CLOCK_MONOTONIC : constant clockid_t := System.OS_Constants.CLOCK_MONOTONIC;
+ subtype char_array is Interfaces.C.char_array;
+
type pthread_attr_t is record
- is_initialized : int;
- stackaddr : System.Address;
- stacksize : int;
- contentionscope : int;
- inheritsched : int;
- schedpolicy : int;
- schedparam : struct_sched_param;
- cputime_clocked_allowed : int;
- detatchstate : int;
+ Data : char_array (1 .. OS_Constants.PTHREAD_ATTR_SIZE);
end record;
pragma Convention (C, pthread_attr_t);
+ for pthread_attr_t'Alignment use Interfaces.C.double'Alignment;
type pthread_condattr_t is record
- flags : int;
- process_shared : int;
+ Data : char_array (1 .. OS_Constants.PTHREAD_CONDATTR_SIZE);
end record;
pragma Convention (C, pthread_condattr_t);
+ for pthread_condattr_t'Alignment use Interfaces.C.double'Alignment;
type pthread_mutexattr_t is record
- is_initialized : int;
- process_shared : int;
- prio_ceiling : int;
- protocol : int;
- mutex_type : int;
- recursive : int;
- end record;
+ Data : char_array (1 .. OS_Constants.PTHREAD_MUTEXATTR_SIZE);
+ end record;
pragma Convention (C, pthread_mutexattr_t);
+ for pthread_mutexattr_t'Alignment use Interfaces.C.double'Alignment;
type pthread_rwlockattr_t is record
- is_initialized : int;
- process_shared : int;
+ Data : char_array (1 .. OS_Constants.PTHREAD_RWLOCKATTR_SIZE);
end record;
pragma Convention (C, pthread_rwlockattr_t);
+ for pthread_rwlockattr_t'Alignment use Interfaces.C.double'Alignment;
type pthread_t is new rtems_id;
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads
2015-11-03 17:41 ` Jan Sommer
@ 2015-11-03 19:13 ` Arnaud Charlet
2015-11-04 11:47 ` Jan Sommer
0 siblings, 1 reply; 14+ messages in thread
From: Arnaud Charlet @ 2015-11-03 19:13 UTC (permalink / raw)
To: Jan Sommer; +Cc: gcc-patches, devel
> > Your ChangeLog entry is not in the proper format, see sections 6.8.1 and
> > 6.8.2 from http://www.gnu.org/prep/standards/standards.html
> >
> > The diff itself is OK.
>
> Ok, fixed this. See the new diff below.
This is now OK, you can go ahead and commit it.
> > You can use svn merge to merge changes on other branches, or try to
> > apply your diff using the "patch" command, and adjust for any merge
> > conflict.
> >
>
> Will do. Do I send a patch for each branch to the list or do I add these changes to
> this patch?
No, if the patch is a straightforward port, you just commit it after
appropriate testing.
Arno
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads
2015-11-03 17:10 ` Arnaud Charlet
@ 2015-11-03 17:41 ` Jan Sommer
2015-11-03 19:13 ` Arnaud Charlet
0 siblings, 1 reply; 14+ messages in thread
From: Jan Sommer @ 2015-11-03 17:41 UTC (permalink / raw)
To: gcc-patches; +Cc: Arnaud Charlet, devel
Am Tuesday 03 November 2015, 18:10:53 schrieb Arnaud Charlet:
> > Let's try again. This time I made the diff against trunk with the changes
> > Sebastian recommended, included a ChangeLog and used svn-diff.
> > If this patch goes through, please let me know how the backporting works.
>
> Your ChangeLog entry is not in the proper format, see sections 6.8.1 and
> 6.8.2 from http://www.gnu.org/prep/standards/standards.html
>
> The diff itself is OK.
>
Ok, fixed this. See the new diff below.
> You can use svn merge to merge changes on other branches, or try to
> apply your diff using the "patch" command, and adjust for any merge
> conflict.
>
Will do. Do I send a patch for each branch to the list or do I add these changes to this patch?
Best regards,
Jan
Index: gcc/ada/ChangeLog
===================================================================
--- gcc/ada/ChangeLog (Revision 229715)
+++ gcc/ada/ChangeLog (Arbeitskopie)
@@ -1,3 +1,8 @@
+2015-11-03 Jan Sommer <soja-lists@aries.uberspace.de>
+
+ * s-oscons-tmplt.c: Generate pthread constants for RTEMS
+ * s-osinte-rtems.ads: Declare pthread structs as opaque types in Ada
+
2015-10-29 Andrew MacLeod <amacleod@redhat.com>
* gcc-interface/decl.c: Reorder #include's and remove duplicates.
Index: gcc/ada/s-oscons-tmplt.c
===================================================================
--- gcc/ada/s-oscons-tmplt.c (Revision 229715)
+++ gcc/ada/s-oscons-tmplt.c (Arbeitskopie)
@@ -157,7 +157,7 @@ pragma Style_Checks ("M32766");
# include <_types.h>
#endif
-#if defined (__linux__) || defined (__ANDROID__)
+#if defined (__linux__) || defined (__ANDROID__) || defined (__rtems__)
# include <pthread.h>
# include <signal.h>
#endif
@@ -1458,7 +1458,7 @@ CNS(CLOCK_RT_Ada, "")
#endif
#if defined (__APPLE__) || defined (__linux__) || defined (__ANDROID__) \
- || defined (DUMMY)
+ || defined (__rtems__) || defined (DUMMY)
/*
-- Sizes of pthread data types
@@ -1501,7 +1501,7 @@ CND(PTHREAD_RWLOCKATTR_SIZE, "pthread_rwlockattr_t
CND(PTHREAD_RWLOCK_SIZE, "pthread_rwlock_t")
CND(PTHREAD_ONCE_SIZE, "pthread_once_t")
-#endif /* __APPLE__ || __linux__ || __ANDROID__ */
+#endif /* __APPLE__ || __linux__ || __ANDROID__ || __rtems__ */
/*
Index: gcc/ada/s-osinte-rtems.ads
===================================================================
--- gcc/ada/s-osinte-rtems.ads (Revision 229715)
+++ gcc/ada/s-osinte-rtems.ads (Arbeitskopie)
@@ -51,6 +51,8 @@
-- It is designed to be a bottom-level (leaf) package.
with Interfaces.C;
+with System.OS_Constants;
+
package System.OS_Interface is
pragma Preelaborate;
@@ -60,6 +62,7 @@ package System.OS_Interface is
subtype rtems_id is Interfaces.C.unsigned;
subtype int is Interfaces.C.int;
+ subtype char is Interfaces.C.char;
subtype short is Interfaces.C.short;
subtype long is Interfaces.C.long;
subtype unsigned is Interfaces.C.unsigned;
@@ -68,7 +71,6 @@ package System.OS_Interface is
subtype unsigned_char is Interfaces.C.unsigned_char;
subtype plain_char is Interfaces.C.plain_char;
subtype size_t is Interfaces.C.size_t;
-
-----------
-- Errno --
-----------
@@ -76,11 +78,11 @@ package System.OS_Interface is
function errno return int;
pragma Import (C, errno, "__get_errno");
- EAGAIN : constant := 11;
- EINTR : constant := 4;
- EINVAL : constant := 22;
- ENOMEM : constant := 12;
- ETIMEDOUT : constant := 116;
+ EAGAIN : constant := System.OS_Constants.EAGAIN;
+ EINTR : constant := System.OS_Constants.EINTR;
+ EINVAL : constant := System.OS_Constants.EINVAL;
+ ENOMEM : constant := System.OS_Constants.ENOMEM;
+ ETIMEDOUT : constant := System.OS_Constants.ETIMEDOUT;
-------------
-- Signals --
@@ -448,6 +450,7 @@ package System.OS_Interface is
ss_low_priority : int;
ss_replenish_period : timespec;
ss_initial_budget : timespec;
+ sched_ss_max_repl : int;
end record;
pragma Convention (C, struct_sched_param);
@@ -621,43 +624,34 @@ private
end record;
pragma Convention (C, timespec);
- CLOCK_REALTIME : constant clockid_t := 1;
- CLOCK_MONOTONIC : constant clockid_t := 4;
+ CLOCK_REALTIME : constant clockid_t := System.OS_Constants.CLOCK_REALTIME;
+ CLOCK_MONOTONIC : constant clockid_t := System.OS_Constants.CLOCK_MONOTONIC;
+ subtype char_array is Interfaces.C.char_array;
+
type pthread_attr_t is record
- is_initialized : int;
- stackaddr : System.Address;
- stacksize : int;
- contentionscope : int;
- inheritsched : int;
- schedpolicy : int;
- schedparam : struct_sched_param;
- cputime_clocked_allowed : int;
- detatchstate : int;
+ Data : char_array (1 .. OS_Constants.PTHREAD_ATTR_SIZE);
end record;
pragma Convention (C, pthread_attr_t);
+ for pthread_attr_t'Alignment use Interfaces.C.double'Alignment;
type pthread_condattr_t is record
- flags : int;
- process_shared : int;
+ Data : char_array (1 .. OS_Constants.PTHREAD_CONDATTR_SIZE);
end record;
pragma Convention (C, pthread_condattr_t);
+ for pthread_condattr_t'Alignment use Interfaces.C.double'Alignment;
type pthread_mutexattr_t is record
- is_initialized : int;
- process_shared : int;
- prio_ceiling : int;
- protocol : int;
- mutex_type : int;
- recursive : int;
- end record;
+ Data : char_array (1 .. OS_Constants.PTHREAD_MUTEXATTR_SIZE);
+ end record;
pragma Convention (C, pthread_mutexattr_t);
+ for pthread_mutexattr_t'Alignment use Interfaces.C.double'Alignment;
type pthread_rwlockattr_t is record
- is_initialized : int;
- process_shared : int;
+ Data : char_array (1 .. OS_Constants.PTHREAD_RWLOCKATTR_SIZE);
end record;
pragma Convention (C, pthread_rwlockattr_t);
+ for pthread_rwlockattr_t'Alignment use Interfaces.C.double'Alignment;
type pthread_t is new rtems_id;
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads
2015-11-03 14:22 Jan Sommer
@ 2015-11-03 17:10 ` Arnaud Charlet
2015-11-03 17:41 ` Jan Sommer
0 siblings, 1 reply; 14+ messages in thread
From: Arnaud Charlet @ 2015-11-03 17:10 UTC (permalink / raw)
To: Jan Sommer; +Cc: gcc-patches, devel
> Let's try again. This time I made the diff against trunk with the changes
> Sebastian recommended, included a ChangeLog and used svn-diff.
> If this patch goes through, please let me know how the backporting works.
Your ChangeLog entry is not in the proper format, see sections 6.8.1 and
6.8.2 from http://www.gnu.org/prep/standards/standards.html
The diff itself is OK.
You can use svn merge to merge changes on other branches, or try to
apply your diff using the "patch" command, and adjust for any merge
conflict.
Arno
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads
@ 2015-11-03 14:22 Jan Sommer
2015-11-03 17:10 ` Arnaud Charlet
0 siblings, 1 reply; 14+ messages in thread
From: Jan Sommer @ 2015-11-03 14:22 UTC (permalink / raw)
To: gcc-patches, Arnaud Charlet; +Cc: devel
Hi,
Let's try again. This time I made the diff against trunk with the changes Sebastian recommended, included a ChangeLog and used svn-diff.
If this patch goes through, please let me know how the backporting works.
Best regards,
Jan
Index: ChangeLog
===================================================================
--- ChangeLog (Revision 229709)
+++ ChangeLog (Arbeitskopie)
@@ -1,3 +1,10 @@
+
+2015-11-03 Jan Sommer <soja-lists@aries.uberspace.de>
+
+ Use opaque types for Ada-declaration of pthread types
+ in Gnat for Rtems.
+ PR ada/68169
+
2015-10-23 Steve Ellcey <sellcey@imgtec.com>
* MAINTAINERS: Update email address.
Index: gcc/ada/s-oscons-tmplt.c
===================================================================
--- gcc/ada/s-oscons-tmplt.c (Revision 229709)
+++ gcc/ada/s-oscons-tmplt.c (Arbeitskopie)
@@ -157,7 +157,7 @@ pragma Style_Checks ("M32766");
# include <_types.h>
#endif
-#if defined (__linux__) || defined (__ANDROID__)
+#if defined (__linux__) || defined (__ANDROID__) || defined (__rtems__)
# include <pthread.h>
# include <signal.h>
#endif
@@ -1458,7 +1458,7 @@ CNS(CLOCK_RT_Ada, "")
#endif
#if defined (__APPLE__) || defined (__linux__) || defined (__ANDROID__) \
- || defined (DUMMY)
+ || defined (__rtems__) || defined (DUMMY)
/*
-- Sizes of pthread data types
@@ -1501,7 +1501,7 @@ CND(PTHREAD_RWLOCKATTR_SIZE, "pthread_rwlockattr_t
CND(PTHREAD_RWLOCK_SIZE, "pthread_rwlock_t")
CND(PTHREAD_ONCE_SIZE, "pthread_once_t")
-#endif /* __APPLE__ || __linux__ || __ANDROID__ */
+#endif /* __APPLE__ || __linux__ || __ANDROID__ || __rtems__ */
/*
Index: gcc/ada/s-osinte-rtems.ads
===================================================================
--- gcc/ada/s-osinte-rtems.ads (Revision 229709)
+++ gcc/ada/s-osinte-rtems.ads (Arbeitskopie)
@@ -51,6 +51,8 @@
-- It is designed to be a bottom-level (leaf) package.
with Interfaces.C;
+with System.OS_Constants;
+
package System.OS_Interface is
pragma Preelaborate;
@@ -60,6 +62,7 @@ package System.OS_Interface is
subtype rtems_id is Interfaces.C.unsigned;
subtype int is Interfaces.C.int;
+ subtype char is Interfaces.C.char;
subtype short is Interfaces.C.short;
subtype long is Interfaces.C.long;
subtype unsigned is Interfaces.C.unsigned;
@@ -68,7 +71,6 @@ package System.OS_Interface is
subtype unsigned_char is Interfaces.C.unsigned_char;
subtype plain_char is Interfaces.C.plain_char;
subtype size_t is Interfaces.C.size_t;
-
-----------
-- Errno --
-----------
@@ -76,11 +78,11 @@ package System.OS_Interface is
function errno return int;
pragma Import (C, errno, "__get_errno");
- EAGAIN : constant := 11;
- EINTR : constant := 4;
- EINVAL : constant := 22;
- ENOMEM : constant := 12;
- ETIMEDOUT : constant := 116;
+ EAGAIN : constant := System.OS_Constants.EAGAIN;
+ EINTR : constant := System.OS_Constants.EINTR;
+ EINVAL : constant := System.OS_Constants.EINVAL;
+ ENOMEM : constant := System.OS_Constants.ENOMEM;
+ ETIMEDOUT : constant := System.OS_Constants.ETIMEDOUT;
-------------
-- Signals --
@@ -448,6 +450,7 @@ package System.OS_Interface is
ss_low_priority : int;
ss_replenish_period : timespec;
ss_initial_budget : timespec;
+ sched_ss_max_repl : int;
end record;
pragma Convention (C, struct_sched_param);
@@ -621,43 +624,34 @@ private
end record;
pragma Convention (C, timespec);
- CLOCK_REALTIME : constant clockid_t := 1;
- CLOCK_MONOTONIC : constant clockid_t := 4;
+ CLOCK_REALTIME : constant clockid_t := System.OS_Constants.CLOCK_REALTIME;
+ CLOCK_MONOTONIC : constant clockid_t := System.OS_Constants.CLOCK_MONOTONIC;
+ subtype char_array is Interfaces.C.char_array;
+
type pthread_attr_t is record
- is_initialized : int;
- stackaddr : System.Address;
- stacksize : int;
- contentionscope : int;
- inheritsched : int;
- schedpolicy : int;
- schedparam : struct_sched_param;
- cputime_clocked_allowed : int;
- detatchstate : int;
+ Data : char_array (1 .. OS_Constants.PTHREAD_ATTR_SIZE);
end record;
pragma Convention (C, pthread_attr_t);
+ for pthread_attr_t'Alignment use Interfaces.C.double'Alignment;
type pthread_condattr_t is record
- flags : int;
- process_shared : int;
+ Data : char_array (1 .. OS_Constants.PTHREAD_CONDATTR_SIZE);
end record;
pragma Convention (C, pthread_condattr_t);
+ for pthread_condattr_t'Alignment use Interfaces.C.double'Alignment;
type pthread_mutexattr_t is record
- is_initialized : int;
- process_shared : int;
- prio_ceiling : int;
- protocol : int;
- mutex_type : int;
- recursive : int;
- end record;
+ Data : char_array (1 .. OS_Constants.PTHREAD_MUTEXATTR_SIZE);
+ end record;
pragma Convention (C, pthread_mutexattr_t);
+ for pthread_mutexattr_t'Alignment use Interfaces.C.double'Alignment;
type pthread_rwlockattr_t is record
- is_initialized : int;
- process_shared : int;
+ Data : char_array (1 .. OS_Constants.PTHREAD_RWLOCKATTR_SIZE);
end record;
pragma Convention (C, pthread_rwlockattr_t);
+ for pthread_rwlockattr_t'Alignment use Interfaces.C.double'Alignment;
type pthread_t is new rtems_id;
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2015-11-04 12:21 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-31 15:55 [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads Jan Sommer
2015-10-31 16:17 ` Jan Sommer
2015-10-31 17:16 ` Arnaud Charlet
2015-11-02 10:57 ` Jan Sommer
2015-11-02 10:59 ` Arnaud Charlet
2015-11-01 16:47 ` Joel Sherrill
2015-11-02 11:40 ` Sebastian Huber
2015-11-03 11:36 ` Jan Sommer
2015-11-03 14:22 Jan Sommer
2015-11-03 17:10 ` Arnaud Charlet
2015-11-03 17:41 ` Jan Sommer
2015-11-03 19:13 ` Arnaud Charlet
2015-11-04 11:47 ` Jan Sommer
2015-11-04 12:21 ` Arnaud Charlet
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).