bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Upstreaming the glibc Hurd port


From: Samuel Thibault
Subject: Re: Upstreaming the glibc Hurd port
Date: Wed, 18 Apr 2018 01:08:35 +0200
User-agent: NeoMutt/20170113 (1.7.2)

Joseph Myers, le mar. 17 avril 2018 23:02:45 +0000, a ecrit:
> On Wed, 18 Apr 2018, Samuel Thibault wrote:
> 
> > 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.
> 
> A bits/types/struct_sched_param.h that does "#define sched_param 
> __sched_param" is not appropriate for Linux, because it would change the 
> C++ mangling of struct sched_param.

Oh.

So that could be as per below?

(the idea is to keep __sched_param close to sched_param so any future
extension would be done alongside).

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..60707023d5
--- /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/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/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 via email to

[Prev in Thread] Current Thread [Next in Thread]