From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1792) id 970543858D35; Sat, 15 Jan 2022 20:32:56 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 970543858D35 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Samuel Thibault To: glibc-cvs@sourceware.org Subject: [glibc] htl: Hide __pthread_attr's __schedparam type [BZ #23088] X-Act-Checkin: glibc X-Git-Author: Samuel Thibault X-Git-Refname: refs/heads/master X-Git-Oldrev: c1105e34aced53b26f02176b973079eb30fc54b1 X-Git-Newrev: 1bd7a06a958e93dbd10d99d30ee9ad82fca13f48 Message-Id: <20220115203256.970543858D35@sourceware.org> Date: Sat, 15 Jan 2022 20:32:56 +0000 (GMT) X-BeenThere: glibc-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Glibc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Jan 2022 20:32:56 -0000 https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1bd7a06a958e93dbd10d99d30ee9ad82fca13f48 commit 1bd7a06a958e93dbd10d99d30ee9ad82fca13f48 Author: Samuel Thibault Date: Sat Jan 15 17:35:51 2022 +0100 htl: Hide __pthread_attr's __schedparam type [BZ #23088] The content of the structure is only used internally, so we can make __pthread_attr_getschedparam and __pthread_attr_setschedparam convert between the public sched_param type and an internal __sched_param. This allows to avoid to spuriously expose the sched_param type. This fixes BZ #23088. Diff: --- sysdeps/htl/bits/types/struct___pthread_attr.h | 8 +-- sysdeps/htl/pt-attr-getschedparam.c | 2 +- sysdeps/htl/pt-attr-setschedparam.c | 4 +- sysdeps/htl/pt-attr.c | 2 +- sysdeps/htl/timer_routines.h | 4 +- sysdeps/mach/hurd/i386/Makefile | 70 -------------------------- 6 files changed, 11 insertions(+), 79 deletions(-) diff --git a/sysdeps/htl/bits/types/struct___pthread_attr.h b/sysdeps/htl/bits/types/struct___pthread_attr.h index ec4d6485c8..9ec7ccc5b6 100644 --- a/sysdeps/htl/bits/types/struct___pthread_attr.h +++ b/sysdeps/htl/bits/types/struct___pthread_attr.h @@ -19,8 +19,6 @@ #ifndef _BITS_TYPES_STRUCT___PTHREAD_ATTR #define _BITS_TYPES_STRUCT___PTHREAD_ATTR 1 -#include - #define __need_size_t #include @@ -28,11 +26,15 @@ enum __pthread_detachstate; enum __pthread_inheritsched; enum __pthread_contentionscope; +struct __sched_param { + int __sched_priority; +}; + /* This structure describes the attributes of a POSIX thread. Note 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-getschedparam.c b/sysdeps/htl/pt-attr-getschedparam.c index 714998abbc..59e7c6d538 100644 --- a/sysdeps/htl/pt-attr-getschedparam.c +++ b/sysdeps/htl/pt-attr-getschedparam.c @@ -26,7 +26,7 @@ int __pthread_attr_getschedparam (const pthread_attr_t *attr, struct sched_param *param) { - memcpy (param, &attr->__schedparam, sizeof *param); + param->sched_priority = attr->__schedparam.__sched_priority; return 0; } diff --git a/sysdeps/htl/pt-attr-setschedparam.c b/sysdeps/htl/pt-attr-setschedparam.c index 52d39126f4..d9b4731fed 100644 --- a/sysdeps/htl/pt-attr-setschedparam.c +++ b/sysdeps/htl/pt-attr-setschedparam.c @@ -26,9 +26,9 @@ int __pthread_attr_setschedparam (pthread_attr_t *attr, const struct sched_param *param) { - if (memcmp (param, &__pthread_default_attr.__schedparam, sizeof *param) == 0) + if (param->sched_priority == __pthread_default_attr.__schedparam.__sched_priority) { - memcpy (&attr->__schedparam, param, sizeof *param); + attr->__schedparam.__sched_priority = param->sched_priority; return 0; } diff --git a/sysdeps/htl/pt-attr.c b/sysdeps/htl/pt-attr.c index 385347ccb2..c460be2156 100644 --- a/sysdeps/htl/pt-attr.c +++ b/sysdeps/htl/pt-attr.c @@ -24,7 +24,7 @@ #include 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 8d0bec84a9..fa69d9e963 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/mach/hurd/i386/Makefile b/sysdeps/mach/hurd/i386/Makefile index f725114619..ec58bb18f6 100644 --- a/sysdeps/mach/hurd/i386/Makefile +++ b/sysdeps/mach/hurd/i386/Makefile @@ -23,76 +23,6 @@ ifeq ($(subdir),conform) # For bugs 23081, 23082, 23083, 23084, 23085, 23086. # (type conformance) conformtest-xfail-conds += i386-gnu - -# For bug 23088 -# (sched_* visibility) -test-xfail-POSIX/fcntl.h/conform = yes -test-xfail-POSIX/signal.h/conform = yes -test-xfail-POSIX/semaphore.h/conform = yes -test-xfail-POSIX/regex.h/conform = yes -test-xfail-POSIX/aio.h/conform = yes -test-xfail-POSIX/mqueue.h/conform = yes -test-xfail-POSIX/sys/types.h/conform = yes -test-xfail-UNIX98/fcntl.h/conform = yes -test-xfail-UNIX98/netdb.h/conform = yes -test-xfail-UNIX98/signal.h/conform = yes -test-xfail-UNIX98/semaphore.h/conform = yes -test-xfail-UNIX98/regex.h/conform = yes -test-xfail-UNIX98/aio.h/conform = yes -test-xfail-UNIX98/ftw.h/conform = yes -test-xfail-UNIX98/mqueue.h/conform = yes -test-xfail-UNIX98/netinet/in.h/conform = yes -test-xfail-UNIX98/sys/wait.h/conform = yes -test-xfail-UNIX98/sys/sem.h/conform = yes -test-xfail-UNIX98/sys/uio.h/conform = yes -test-xfail-UNIX98/sys/socket.h/conform = yes -test-xfail-UNIX98/sys/types.h/conform = yes -test-xfail-UNIX98/stdlib.h/conform = yes -test-xfail-UNIX98/arpa/inet.h/conform = yes -test-xfail-POSIX2008/fcntl.h/conform = yes -test-xfail-POSIX2008/netdb.h/conform = yes -test-xfail-POSIX2008/signal.h/conform = yes -test-xfail-POSIX2008/semaphore.h/conform = yes -test-xfail-POSIX2008/regex.h/conform = yes -test-xfail-POSIX2008/aio.h/conform = yes -test-xfail-POSIX2008/mqueue.h/conform = yes -test-xfail-POSIX2008/netinet/in.h/conform = yes -test-xfail-POSIX2008/sys/wait.h/conform = yes -test-xfail-POSIX2008/sys/socket.h/conform = yes -test-xfail-POSIX2008/sys/types.h/conform = yes -test-xfail-POSIX2008/arpa/inet.h/conform = yes -test-xfail-XOPEN2K/fcntl.h/conform = yes -test-xfail-XOPEN2K/netdb.h/conform = yes -test-xfail-XOPEN2K/signal.h/conform = yes -test-xfail-XOPEN2K/semaphore.h/conform = yes -test-xfail-XOPEN2K/regex.h/conform = yes -test-xfail-XOPEN2K/aio.h/conform = yes -test-xfail-XOPEN2K/ftw.h/conform = yes -test-xfail-XOPEN2K/mqueue.h/conform = yes -test-xfail-XOPEN2K/netinet/in.h/conform = yes -test-xfail-XOPEN2K/sys/wait.h/conform = yes -test-xfail-XOPEN2K/sys/sem.h/conform = yes -test-xfail-XOPEN2K/sys/uio.h/conform = yes -test-xfail-XOPEN2K/sys/socket.h/conform = yes -test-xfail-XOPEN2K/sys/types.h/conform = yes -test-xfail-XOPEN2K/stdlib.h/conform = yes -test-xfail-XOPEN2K/arpa/inet.h/conform = yes -test-xfail-XOPEN2K8/fcntl.h/conform = yes -test-xfail-XOPEN2K8/netdb.h/conform = yes -test-xfail-XOPEN2K8/signal.h/conform = yes -test-xfail-XOPEN2K8/semaphore.h/conform = yes -test-xfail-XOPEN2K8/regex.h/conform = yes -test-xfail-XOPEN2K8/aio.h/conform = yes -test-xfail-XOPEN2K8/ftw.h/conform = yes -test-xfail-XOPEN2K8/mqueue.h/conform = yes -test-xfail-XOPEN2K8/netinet/in.h/conform = yes -test-xfail-XOPEN2K8/sys/wait.h/conform = yes -test-xfail-XOPEN2K8/sys/sem.h/conform = yes -test-xfail-XOPEN2K8/sys/uio.h/conform = yes -test-xfail-XOPEN2K8/sys/socket.h/conform = yes -test-xfail-XOPEN2K8/sys/types.h/conform = yes -test-xfail-XOPEN2K8/stdlib.h/conform = yes -test-xfail-XOPEN2K8/arpa/inet.h/conform = yes endif # For bug 23286