public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Samuel Thibault <sthibaul@sourceware.org>
To: glibc-cvs@sourceware.org
Subject: [glibc] htl: Hide __pthread_attr's __schedparam type [BZ #23088]
Date: Sat, 15 Jan 2022 20:32:56 +0000 (GMT)	[thread overview]
Message-ID: <20220115203256.970543858D35@sourceware.org> (raw)

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1bd7a06a958e93dbd10d99d30ee9ad82fca13f48

commit 1bd7a06a958e93dbd10d99d30ee9ad82fca13f48
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
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 <bits/types/struct_sched_param.h>
-
 #define __need_size_t
 #include <stddef.h>
 
@@ -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 <pt-internal.h>
 
 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


                 reply	other threads:[~2022-01-15 20:32 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20220115203256.970543858D35@sourceware.org \
    --to=sthibaul@sourceware.org \
    --cc=glibc-cvs@sourceware.org \
    /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).