From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 79415 invoked by alias); 17 Apr 2018 22:50:25 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 79403 invoked by uid 89); 17 Apr 2018 22:50:25 -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=H*r:sk:static-, Hx-spam-relays-external:sk:static-, H*RU:sk:static-, lun X-HELO: hera.aquilenet.fr Date: Tue, 17 Apr 2018 22:50:00 -0000 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: <20180417225015.56yv5wktzcx75srk@var.youpi.perso.aquilenet.fr> Mail-Followup-To: Joseph Myers , Florian Weimer , Thomas Schwinge , GNU C Library , bug-hurd@gnu.org, David Michael References: <20180124011051.5s2vugyq3ybnurwc@var.youpi.perso.aquilenet.fr> <20180124012726.tibylwp4re5dtgc3@var.youpi.perso.aquilenet.fr> <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> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20170113 (1.7.2) X-SW-Source: 2018-04/txt/msg00292.txt.bz2 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 but that brings things > > unwanted for (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 #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..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 + . */ + +#ifndef _BITS_TYPES_STRUCT_SCHED_PARAM +#define _BITS_TYPES_STRUCT_SCHED_PARAM 1 + +#include +/* 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 #include -/* 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 +#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