* [PATCH] sched_attr: Do not define for glibc >= 2.41 @ 2025-01-28 23:08 Khem Raj 2025-01-28 23:08 ` Khem Raj 2025-01-29 21:54 ` John Kacur 0 siblings, 2 replies; 5+ messages in thread From: Khem Raj @ 2025-01-28 23:08 UTC (permalink / raw) To: Clark Williams, John Kacur; +Cc: Khem Raj, rt-users glibc 2.41+ has added [1] definitions for sched_setattr and sched_getattr functions and struct sched_attr. Therefore, it needs to be checked for here as well before defining sched_attr Define sched_attr conditionally on SCHED_ATTR_SIZE_VER0 Fixes builds with glibc/trunk [1] https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=21571ca0d70302909cf72707b2a7736cf12190a0;hp=298bc488fdc047da37482f4003023cb9adef78f8 Signed-off-by: Khem Raj <raj.khem@gmail.com> Cc: Clark Williams <williams@redhat.com> Cc: John Kacur <jkacur@redhat.com> Cc: rt-users <linux-rt-users@vger.kernel.org> --- src/include/rt-sched.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/include/rt-sched.h b/src/include/rt-sched.h index 80171c7..9cf0e3a 100644 --- a/src/include/rt-sched.h +++ b/src/include/rt-sched.h @@ -42,6 +42,8 @@ #define __NR_sched_getattr 275 #endif +/* sched_attr is not defined in glibc < 2.41 */ +#ifndef SCHED_ATTR_SIZE_VER0 struct sched_attr { uint32_t size; uint32_t sched_policy; @@ -68,4 +70,6 @@ int sched_getattr(pid_t pid, unsigned int size, unsigned int flags); +#endif /* SCHED_ATTR_SIZE_VER0 */ + #endif /* __RT_SCHED_H__ */ ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH] sched_attr: Do not define for glibc >= 2.41 2025-01-28 23:08 [PATCH] sched_attr: Do not define for glibc >= 2.41 Khem Raj @ 2025-01-28 23:08 ` Khem Raj 2025-01-29 21:54 ` John Kacur 1 sibling, 0 replies; 5+ messages in thread From: Khem Raj @ 2025-01-28 23:08 UTC (permalink / raw) To: Clark Williams, John Kacur; +Cc: Khem Raj, rt-users glibc 2.41+ has added [1] definitions for sched_setattr and sched_getattr functions and struct sched_attr. Therefore, it needs to be checked for here as well before defining sched_attr Define sched_attr conditionally on SCHED_ATTR_SIZE_VER0 Fixes builds with glibc/trunk [1] https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=21571ca0d70302909cf72707b2a7736cf12190a0;hp=298bc488fdc047da37482f4003023cb9adef78f8 Signed-off-by: Khem Raj <raj.khem@gmail.com> Cc: Clark Williams <williams@redhat.com> Cc: John Kacur <jkacur@redhat.com> Cc: rt-users <linux-rt-users@vger.kernel.org> --- src/include/rt-sched.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/include/rt-sched.h b/src/include/rt-sched.h index 80171c7..9cf0e3a 100644 --- a/src/include/rt-sched.h +++ b/src/include/rt-sched.h @@ -42,6 +42,8 @@ #define __NR_sched_getattr 275 #endif +/* sched_attr is not defined in glibc < 2.41 */ +#ifndef SCHED_ATTR_SIZE_VER0 struct sched_attr { uint32_t size; uint32_t sched_policy; @@ -68,4 +70,6 @@ int sched_getattr(pid_t pid, unsigned int size, unsigned int flags); +#endif /* SCHED_ATTR_SIZE_VER0 */ + #endif /* __RT_SCHED_H__ */ ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] sched_attr: Do not define for glibc >= 2.41 2025-01-28 23:08 [PATCH] sched_attr: Do not define for glibc >= 2.41 Khem Raj 2025-01-28 23:08 ` Khem Raj @ 2025-01-29 21:54 ` John Kacur 2025-01-29 23:39 ` Crystal Wood 1 sibling, 1 reply; 5+ messages in thread From: John Kacur @ 2025-01-29 21:54 UTC (permalink / raw) To: Khem Raj; +Cc: Clark Williams, rt-users On Tue, 28 Jan 2025, Khem Raj wrote: > glibc 2.41+ has added [1] definitions for sched_setattr and sched_getattr functions > and struct sched_attr. Therefore, it needs to be checked for here as well before > defining sched_attr > > Define sched_attr conditionally on SCHED_ATTR_SIZE_VER0 > > Fixes builds with glibc/trunk > > [1] https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=21571ca0d70302909cf72707b2a7736cf12190a0;hp=298bc488fdc047da37482f4003023cb9adef78f8 > > Signed-off-by: Khem Raj <raj.khem@gmail.com> > Cc: Clark Williams <williams@redhat.com> > Cc: John Kacur <jkacur@redhat.com> > Cc: rt-users <linux-rt-users@vger.kernel.org> > --- > src/include/rt-sched.h | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/src/include/rt-sched.h b/src/include/rt-sched.h > index 80171c7..9cf0e3a 100644 > --- a/src/include/rt-sched.h > +++ b/src/include/rt-sched.h > @@ -42,6 +42,8 @@ > #define __NR_sched_getattr 275 > #endif > > +/* sched_attr is not defined in glibc < 2.41 */ > +#ifndef SCHED_ATTR_SIZE_VER0 > struct sched_attr { > uint32_t size; > uint32_t sched_policy; > @@ -68,4 +70,6 @@ int sched_getattr(pid_t pid, > unsigned int size, > unsigned int flags); > > +#endif /* SCHED_ATTR_SIZE_VER0 */ > + > #endif /* __RT_SCHED_H__ */ > > Does the following fix your problem? From 280e198c39d1b17d0491d7c4e7afda97ae6c8e6f Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz <yselkowi@redhat.com> Date: Wed, 29 Jan 2025 16:46:11 -0500 Subject: [PATCH] Fix rt-tests build with glibc-2.41 The sched_*attr APIs were added to glibc https://sourceware.org/git/?p=glibc.git;a=commit;h=21571ca0d70302909cf72707b2a7736cf12190a0 This fixes the build conflict in rt-tests with glibc-2.4 Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com> Signed-off-by: John Kacur <jkacur@redhat.com> --- src/include/rt-sched.h | 2 ++ src/lib/rt-sched.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/include/rt-sched.h b/src/include/rt-sched.h index 80171c76e0ee..dfd7f45f51cc 100644 --- a/src/include/rt-sched.h +++ b/src/include/rt-sched.h @@ -42,6 +42,7 @@ #define __NR_sched_getattr 275 #endif +#if ! __GLIBC_PREREQ(2, 41) struct sched_attr { uint32_t size; uint32_t sched_policy; @@ -67,5 +68,6 @@ int sched_getattr(pid_t pid, struct sched_attr *attr, unsigned int size, unsigned int flags); +#endif #endif /* __RT_SCHED_H__ */ diff --git a/src/lib/rt-sched.c b/src/lib/rt-sched.c index 8023bc70c473..2500abde26e4 100644 --- a/src/lib/rt-sched.c +++ b/src/lib/rt-sched.c @@ -14,6 +14,7 @@ #include "rt-sched.h" +#if ! __GLIBC_PREREQ(2, 41) int sched_setattr(pid_t pid, const struct sched_attr *attr, unsigned int flags) @@ -28,3 +29,4 @@ int sched_getattr(pid_t pid, { return syscall(__NR_sched_getattr, pid, attr, size, flags); } +#endif -- 2.47.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] sched_attr: Do not define for glibc >= 2.41 2025-01-29 21:54 ` John Kacur @ 2025-01-29 23:39 ` Crystal Wood 2025-01-30 16:00 ` John Kacur 0 siblings, 1 reply; 5+ messages in thread From: Crystal Wood @ 2025-01-29 23:39 UTC (permalink / raw) To: John Kacur, Khem Raj; +Cc: Clark Williams, rt-users On Wed, 2025-01-29 at 16:54 -0500, John Kacur wrote: > > On Tue, 28 Jan 2025, Khem Raj wrote: > > > glibc 2.41+ has added [1] definitions for sched_setattr and sched_getattr functions > > and struct sched_attr. Therefore, it needs to be checked for here as well before > > defining sched_attr > > > > Define sched_attr conditionally on SCHED_ATTR_SIZE_VER0 > > > > Fixes builds with glibc/trunk > > > > [1] https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=21571ca0d70302909cf72707b2a7736cf12190a0;hp=298bc488fdc047da37482f4003023cb9adef78f8 > > > > Signed-off-by: Khem Raj <raj.khem@gmail.com> > > Cc: Clark Williams <williams@redhat.com> > > Cc: John Kacur <jkacur@redhat.com> > > Cc: rt-users <linux-rt-users@vger.kernel.org> > > --- > > src/include/rt-sched.h | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/src/include/rt-sched.h b/src/include/rt-sched.h > > index 80171c7..9cf0e3a 100644 > > --- a/src/include/rt-sched.h > > +++ b/src/include/rt-sched.h > > @@ -42,6 +42,8 @@ > > #define __NR_sched_getattr 275 > > #endif > > > > +/* sched_attr is not defined in glibc < 2.41 */ > > +#ifndef SCHED_ATTR_SIZE_VER0 > > struct sched_attr { > > uint32_t size; > > uint32_t sched_policy; > > @@ -68,4 +70,6 @@ int sched_getattr(pid_t pid, > > unsigned int size, > > unsigned int flags); > > > > +#endif /* SCHED_ATTR_SIZE_VER0 */ > > + > > #endif /* __RT_SCHED_H__ */ > > > > > > Does the following fix your problem? [snip] > +#if ! __GLIBC_PREREQ(2, 41) I'm not familiar with the norms surrounding use of this macro, but it's generally better to test features than versions... what if this feature gets backported into some distro's earlier-version-numbered glibc? FWIW, it looks like QEMU went with the feature test approach: https://patchwork.ozlabs.org/project/qemu-devel/patch/20241011054806.1014276-1-raj.khem@gmail.com/ https://patchwork.ozlabs.org/project/qemu-devel/patch/20241011193140.1047648-1-raj.khem@gmail.com/ Also, was that patch posted anywhere? Just wondering if I've still got problems with email filtering. -Crystal ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] sched_attr: Do not define for glibc >= 2.41 2025-01-29 23:39 ` Crystal Wood @ 2025-01-30 16:00 ` John Kacur 0 siblings, 0 replies; 5+ messages in thread From: John Kacur @ 2025-01-30 16:00 UTC (permalink / raw) To: Crystal Wood; +Cc: Khem Raj, Clark Williams, rt-users On Wed, 29 Jan 2025, Crystal Wood wrote: > On Wed, 2025-01-29 at 16:54 -0500, John Kacur wrote: > > > > On Tue, 28 Jan 2025, Khem Raj wrote: > > > > > glibc 2.41+ has added [1] definitions for sched_setattr and sched_getattr functions > > > and struct sched_attr. Therefore, it needs to be checked for here as well before > > > defining sched_attr > > > > > > Define sched_attr conditionally on SCHED_ATTR_SIZE_VER0 > > > > > > Fixes builds with glibc/trunk > > > > > > [1] https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=21571ca0d70302909cf72707b2a7736cf12190a0;hp=298bc488fdc047da37482f4003023cb9adef78f8 > > > > > > Signed-off-by: Khem Raj <raj.khem@gmail.com> > > > Cc: Clark Williams <williams@redhat.com> > > > Cc: John Kacur <jkacur@redhat.com> > > > Cc: rt-users <linux-rt-users@vger.kernel.org> > > > --- > > > src/include/rt-sched.h | 4 ++++ > > > 1 file changed, 4 insertions(+) > > > > > > diff --git a/src/include/rt-sched.h b/src/include/rt-sched.h > > > index 80171c7..9cf0e3a 100644 > > > --- a/src/include/rt-sched.h > > > +++ b/src/include/rt-sched.h > > > @@ -42,6 +42,8 @@ > > > #define __NR_sched_getattr 275 > > > #endif > > > > > > +/* sched_attr is not defined in glibc < 2.41 */ > > > +#ifndef SCHED_ATTR_SIZE_VER0 > > > struct sched_attr { > > > uint32_t size; > > > uint32_t sched_policy; > > > @@ -68,4 +70,6 @@ int sched_getattr(pid_t pid, > > > unsigned int size, > > > unsigned int flags); > > > > > > +#endif /* SCHED_ATTR_SIZE_VER0 */ > > > + > > > #endif /* __RT_SCHED_H__ */ > > > > > > > > > > Does the following fix your problem? > [snip] > > > +#if ! __GLIBC_PREREQ(2, 41) > > I'm not familiar with the norms surrounding use of this macro, but it's > generally better to test features than versions... what if this feature > gets backported into some distro's earlier-version-numbered glibc? The macro is part of the glibc code in features.h You make a good point about testing the features, but you could also argue that there is no guarantee that the implementation will always have SCHED_ATTR_SIZE_VER0 and that it could break in the future. > > FWIW, it looks like QEMU went with the feature test approach: > https://patchwork.ozlabs.org/project/qemu-devel/patch/20241011054806.1014276-1-raj.khem@gmail.com/ > https://patchwork.ozlabs.org/project/qemu-devel/patch/20241011193140.1047648-1-raj.khem@gmail.com/ > Well, that's by the same author who sent this patch. > Also, was that patch posted anywhere? Just wondering if I've still got > problems with email filtering. No, a version of this was sent to me in fedora channels to fix a break in rawhide. The version is more complete than the other patch because it also fixes src/lib/rt-sched.c If this works for folks, lets just use it and move on, it's not worth endlessly hashing out. John Kacur > > -Crystal > > > ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-01-30 16:00 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-01-28 23:08 [PATCH] sched_attr: Do not define for glibc >= 2.41 Khem Raj 2025-01-28 23:08 ` Khem Raj 2025-01-29 21:54 ` John Kacur 2025-01-29 23:39 ` Crystal Wood 2025-01-30 16:00 ` John Kacur
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 NNTP newsgroup(s).