public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Samuel Thibault <samuel.thibault@gnu.org>
To: Joseph Myers <joseph@codesourcery.com>
Cc: Florian Weimer <fweimer@redhat.com>,
	Thomas Schwinge <thomas@codesourcery.com>,
	GNU C Library <libc-alpha@sourceware.org>,
	bug-hurd@gnu.org, David Michael <fedora.dm0@gmail.com>
Subject: Re: Upstreaming the glibc Hurd port
Date: Tue, 17 Apr 2018 22:50:00 -0000	[thread overview]
Message-ID: <20180417225015.56yv5wktzcx75srk@var.youpi.perso.aquilenet.fr> (raw)
In-Reply-To: <alpine.DEB.2.20.1804030010550.29764@digraph.polyomino.org.uk>

Hello,

Joseph Myers, le mar. 03 avril 2018 00:13:43 +0000, a ecrit:
> On Mon, 2 Apr 2018, Samuel Thibault wrote:
> > Samuel Thibault, on lun. 02 avril 2018 17:50:17 +0200, wrote:
> > > There are a few remaining namespace issues due to missing __ marking or
> > > spurious #includes.
> > 
> > One issue is with struct sched_param.  The __sched_param definition
> > was removed in glibc while htl's pthread_attr uses it.  For now I just
> > made struct___pthread_attr.h include <sched.h> but that brings things
> > unwanted for <sys/types.h> (which is supposed to pull pthread_attr).
> > 
> > So I guess we should revert to defining __sched_param?
> 
> If you need, on Hurd, in installed headers, a type "struct __sched_param", 
> that would most naturally go in a Hurd-specific 
> bits/types/struct___sched_param.h.

Well, there is actually nothing hurd-specific in struct sched_param,
except the fact that the __sched_param name is needed so
sys/types.h can have pthread_attr (which uses it) without exposing
sched_param, as required by some levels of standard (e.g.
./conform/POSIX/fcntl.h/conform.out complains about the presence of
sched_param currently). Linux doesn't have that issue because it just
always completely hides the content of pthread types.

The patch below would just introduce bits/types/struct___sched_param.h.
and bits/types/struct_sched_param.h for all ports since it's the same.

> Anything restoring the old __need_* mechanism for any glibc-internal
> definitions is not appropriate

Sure!

Samuel

diff --git a/bits/sched.h b/bits/sched.h
index 8d9f077eee..bdd94c969d 100644
--- a/bits/sched.h
+++ b/bits/sched.h
@@ -29,10 +29,6 @@
 #define SCHED_FIFO	1
 #define SCHED_RR	2
 
-/* Data structure to describe a process' schedulability.  */
-struct sched_param
-{
-  int sched_priority;
-};
+#include <bits/types/struct_sched_param.h>
 
 #endif /* bits/sched.h */
diff --git a/bits/types/struct___sched_param.h b/bits/types/struct___sched_param.h
new file mode 100644
index 0000000000..a6d95bfd61
--- /dev/null
+++ b/bits/types/struct___sched_param.h
@@ -0,0 +1,28 @@
+/* Sched parameter structure.  Generic version.
+   Copyright (C) 1996-2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library;  if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _BITS_TYPES_STRUCT___SCHED_PARAM
+#define _BITS_TYPES_STRUCT___SCHED_PARAM	1
+
+/* Data structure to describe a process' schedulability.  */
+struct __sched_param
+{
+  int __sched_priority;
+};
+
+#endif /* bits/types/struct___sched_param.h */
diff --git a/bits/types/struct_sched_param.h b/bits/types/struct_sched_param.h
new file mode 100644
index 0000000000..416d8bf8c4
--- /dev/null
+++ b/bits/types/struct_sched_param.h
@@ -0,0 +1,27 @@
+/* Sched parameter structure.  Generic version.
+   Copyright (C) 1996-2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library;  if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _BITS_TYPES_STRUCT_SCHED_PARAM
+#define _BITS_TYPES_STRUCT_SCHED_PARAM	1
+
+#include <bits/types/struct___sched_param.h>
+/* Define the real names for the elements of `struct sched_param'.  */
+#define sched_param __sched_param
+#define sched_priority __sched_priority
+
+#endif /* bits/types/struct_sched_param.h */
diff --git a/posix/Makefile b/posix/Makefile
index 51dcf129ec..2a1cb2dd47 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -31,7 +31,8 @@ headers	:= sys/utsname.h sys/times.h sys/wait.h sys/types.h unistd.h	      \
 	   bits/local_lim.h tar.h bits/utsname.h bits/confname.h	      \
 	   bits/waitflags.h bits/waitstatus.h sys/unistd.h sched.h	      \
 	   bits/sched.h bits/cpu-set.h re_comp.h wait.h bits/environments.h   \
-	   cpio.h spawn.h bits/unistd.h
+	   cpio.h spawn.h bits/unistd.h					      \
+	   bits/types/struct___sched_param.h bits/types/struct_sched_param.h
 
 routines :=								      \
 	uname								      \
diff --git a/posix/sched.h b/posix/sched.h
index 619b3b3a81..4d985ab37f 100644
--- a/posix/sched.h
+++ b/posix/sched.h
@@ -43,11 +43,6 @@ typedef __pid_t pid_t;
 #include <bits/sched.h>
 #include <bits/cpu-set.h>
 
-/* Backward compatibility.  */
-#define sched_priority    sched_priority
-#define __sched_priority  sched_priority
-
-
 __BEGIN_DECLS
 
 /* Set scheduling parameters for a process.  */
diff --git a/sysdeps/htl/bits/types/struct___pthread_attr.h b/sysdeps/htl/bits/types/struct___pthread_attr.h
index 2299c0179f..5c4b4e6c30 100644
--- a/sysdeps/htl/bits/types/struct___pthread_attr.h
+++ b/sysdeps/htl/bits/types/struct___pthread_attr.h
@@ -19,7 +19,7 @@
 #ifndef _BITS_TYPES_STRUCT___PTHREAD_ATTR
 #define _BITS_TYPES_STRUCT___PTHREAD_ATTR	1
 
-#include <sched.h>
+#include <bits/types/struct___sched_param.h>
 
 #define __need_size_t
 #include <stddef.h>
@@ -32,7 +32,7 @@ enum __pthread_contentionscope;
    that not all of them are supported on all systems.  */
 struct __pthread_attr
 {
-  struct sched_param __schedparam;
+  struct __sched_param __schedparam;
   void *__stackaddr;
   size_t __stacksize;
   size_t __guardsize;
diff --git a/sysdeps/htl/pt-attr.c b/sysdeps/htl/pt-attr.c
index 77ecc73465..fc39aa63d6 100644
--- a/sysdeps/htl/pt-attr.c
+++ b/sysdeps/htl/pt-attr.c
@@ -24,7 +24,7 @@
 #include <pt-internal.h>
 
 const struct __pthread_attr __pthread_default_attr = {
-  __schedparam: { sched_priority: 0 },
+  __schedparam: { __sched_priority: 0 },
   __stacksize: 0,
   __stackaddr: NULL,
 #ifdef PAGESIZE
diff --git a/sysdeps/htl/timer_routines.h b/sysdeps/htl/timer_routines.h
index a8134f510f..062128cf92 100644
--- a/sysdeps/htl/timer_routines.h
+++ b/sysdeps/htl/timer_routines.h
@@ -32,8 +32,8 @@ thread_attr_compare (const pthread_attr_t * left, const pthread_attr_t * right)
   struct __pthread_attr *ileft = (struct __pthread_attr *) left;
   struct __pthread_attr *iright = (struct __pthread_attr *) right;
 
-  return ileft->__schedparam.sched_priority
-	   == iright->__schedparam.sched_priority
+  return ileft->__schedparam.__sched_priority
+	   == iright->__schedparam.__sched_priority
 	 && ileft->__stackaddr == iright->__stackaddr
 	 && ileft->__stacksize == iright->__stacksize
 	 && ileft->__guardsize == iright->__guardsize
diff --git a/sysdeps/unix/sysv/linux/bits/sched.h b/sysdeps/unix/sysv/linux/bits/sched.h
index 24159c57b3..34f27a7d9b 100644
--- a/sysdeps/unix/sysv/linux/bits/sched.h
+++ b/sysdeps/unix/sysv/linux/bits/sched.h
@@ -71,11 +71,7 @@
 # define CLONE_IO	0x80000000	/* Clone I/O context.  */
 #endif
 
-/* Data structure to describe a process' schedulability.  */
-struct sched_param
-{
-  int sched_priority;
-};
+#include <bits/types/struct_sched_param.h>
 
 __BEGIN_DECLS
 

  reply	other threads:[~2018-04-17 22:50 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-18 12:39 Florian Weimer
2018-01-18 12:45 ` Samuel Thibault
2018-01-18 12:58   ` Florian Weimer
2018-01-18 13:47   ` Joseph Myers
2018-01-18 13:52     ` Joseph Myers
2018-01-18 13:59       ` Samuel Thibault
2018-01-18 13:58     ` Samuel Thibault
2018-01-18 14:03       ` Joseph Myers
2018-01-28 18:40         ` Samuel Thibault
2018-01-18 14:22       ` Thomas Schwinge
2018-01-18 14:27         ` Samuel Thibault
2018-01-18 15:14         ` Samuel Thibault
2018-01-18 15:35           ` Joseph Myers
2018-01-18 15:42             ` Samuel Thibault
2018-01-18 16:48               ` Joseph Myers
2018-01-18 16:59                 ` Samuel Thibault
2018-01-18 23:16                   ` Joseph Myers
2018-01-18 23:59                     ` Samuel Thibault
2018-01-19  0:34                       ` Joseph Myers
2018-01-19 10:10                         ` Thomas Schwinge
2018-01-19 12:35                           ` Manolis Ragkousis
2018-01-19 13:08                           ` Joseph Myers
2018-01-19 14:11                             ` Thomas Schwinge
2018-01-19 15:12                               ` Joseph Myers
2018-01-19 18:24                                 ` Zack Weinberg
2018-01-19 18:30                                   ` Joseph Myers
2018-01-19 17:23                           ` Joseph Myers
2018-01-19 17:32                             ` Samuel Thibault
2018-01-19 17:50                               ` Joseph Myers
2018-01-19 17:59                                 ` Samuel Thibault
2018-01-24  1:10                             ` Samuel Thibault
2018-01-24  1:26                               ` Joseph Myers
2018-01-24  1:27                               ` Samuel Thibault
2018-01-25  1:41                                 ` Samuel Thibault
2018-01-25 15:43                                   ` Joseph Myers
2018-01-25 16:12                                   ` Joseph Myers
2018-01-25 16:20                                     ` Samuel Thibault
2018-03-19  1:51                                     ` Samuel Thibault
2018-03-19 15:36                                       ` Zack Weinberg
2018-03-19 15:47                                         ` Samuel Thibault
2018-03-19 15:54                                           ` Zack Weinberg
2018-03-19 16:05                                             ` Samuel Thibault
2018-03-26 23:13                                       ` Rafal Luzynski
2018-03-27  7:45                                         ` Samuel Thibault
2018-03-27  9:01                                         ` Samuel Thibault
2018-03-27 10:40                                           ` Rafal Luzynski
2018-03-27 10:43                                             ` Samuel Thibault
2018-03-27 10:53                                               ` Rafal Luzynski
2018-03-27 14:46                                           ` Tulio Magno Quites Machado Filho
2018-03-27 14:53                                             ` Carlos O'Donell
2018-03-27 16:31                                             ` Samuel Thibault
2018-04-02  0:10                                       ` Samuel Thibault
2018-04-02  7:51                                         ` Florian Weimer
2018-04-02  8:24                                           ` Samuel Thibault
2018-04-02 14:17                                         ` Joseph Myers
2018-04-02 15:50                                           ` Samuel Thibault
2018-04-02 16:13                                             ` Samuel Thibault
2018-04-03  0:13                                               ` Joseph Myers
2018-04-17 22:50                                                 ` Samuel Thibault [this message]
2018-04-17 23:02                                                   ` Joseph Myers
2018-04-17 23:08                                                     ` Samuel Thibault
2018-04-18 11:13                                                       ` Joseph Myers
2018-04-18 13:54                                                         ` Zack Weinberg
2018-04-18 14:03                                                           ` Samuel Thibault
2018-04-18 18:40                                                             ` Zack Weinberg
2018-04-18 18:53                                                               ` Samuel Thibault
2018-04-03  0:10                                             ` Joseph Myers
2018-04-18 23:57                                               ` Samuel Thibault
2018-04-21  8:54                                                 ` Samuel Thibault
2018-04-02 14:22                                         ` Joseph Myers
2018-04-02 14:47                                           ` Samuel Thibault
2018-04-02 16:01                                             ` H.J. Lu
2018-04-02 16:16                                               ` Samuel Thibault
2018-04-02 17:06                                                 ` H.J. Lu
2018-04-02 17:16                                                   ` Samuel Thibault
2018-04-02 17:22                                                     ` H.J. Lu
2018-04-02 17:35                                                       ` Samuel Thibault
2018-04-02 17:37                                                         ` Samuel Thibault
2018-04-03 15:45                                         ` Joseph Myers
2018-04-03 16:08                                           ` Samuel Thibault
2018-04-03 21:48                                           ` Joseph Myers
2018-04-03 21:58                                             ` Samuel Thibault
2018-04-03 22:07                                               ` Zack Weinberg
2018-04-03 22:48                                                 ` Joseph Myers
2018-04-05 11:07                                               ` Florian Weimer
2018-01-18 14:33     ` Samuel Thibault
2018-01-18 15:24       ` Joseph Myers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180417225015.56yv5wktzcx75srk@var.youpi.perso.aquilenet.fr \
    --to=samuel.thibault@gnu.org \
    --cc=bug-hurd@gnu.org \
    --cc=fedora.dm0@gmail.com \
    --cc=fweimer@redhat.com \
    --cc=joseph@codesourcery.com \
    --cc=libc-alpha@sourceware.org \
    --cc=thomas@codesourcery.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).