From patchwork Tue Apr 17 23:08:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Samuel Thibault X-Patchwork-Id: 26770 Received: (qmail 115164 invoked by alias); 17 Apr 2018 23:08:43 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 115153 invoked by uid 89); 17 Apr 2018 23:08:42 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, SPF_HELO_PASS, SPF_NEUTRAL autolearn=ham version=3.3.2 spammy=alongside X-HELO: hera.aquilenet.fr Date: Wed, 18 Apr 2018 01:08:35 +0200 From: Samuel Thibault To: Joseph Myers Cc: Florian Weimer , Thomas Schwinge , GNU C Library , bug-hurd@gnu.org, David Michael Subject: Re: Upstreaming the glibc Hurd port Message-ID: <20180417230835.pa5a3lvoudjyt4gy@var.youpi.perso.aquilenet.fr> Mail-Followup-To: Joseph Myers , Florian Weimer , Thomas Schwinge , GNU C Library , bug-hurd@gnu.org, David Michael References: <20180125014143.2hxhzon5lzxtqq6j@var.youpi.perso.aquilenet.fr> <20180319015122.j5tzslkdcnvampoh@var.youpi.perso.aquilenet.fr> <20180402001003.3u5n2p5pdmv4hos5@var.youpi.perso.aquilenet.fr> <20180402155017.iermidp5siqgcixv@var.youpi.perso.aquilenet.fr> <20180402161347.e5nx7cdt7pkgx52u@var.youpi.perso.aquilenet.fr> <20180417225015.56yv5wktzcx75srk@var.youpi.perso.aquilenet.fr> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: 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 #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 + . */ + +#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 + . */ + +#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 +#include #define __need_size_t #include @@ -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 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 __BEGIN_DECLS