Thread (51 messages) 51 messages, 7 authors, 2023-10-28

Re: [PATCH v2 28/39] timekeeping: Fix a circular include dependency

From: "Arnd Bergmann" <arnd@arndb.de>
Date: 2023-10-27 06:35:30
Also in: cgroups, linux-arch, linux-doc, linux-fsdevel, linux-iommu, linux-mm, lkml

On Fri, Oct 27, 2023, at 01:54, Kent Overstreet wrote:
On Fri, Oct 27, 2023 at 01:05:48AM +0200, Thomas Gleixner wrote:
quoted
On Thu, Oct 26 2023 at 18:33, Suren Baghdasaryan wrote:
quoted
On Wed, Oct 25, 2023 at 5:33 PM Thomas Gleixner [off-list ref] wrote:
quoted
quoted
This avoids a circular header dependency in an upcoming patch by only
making hrtimer.h depend on percpu-defs.h
What's the actual dependency problem?
Sorry for the delay.
When we instrument per-cpu allocations in [1] we need to include
sched.h in percpu.h to be able to use alloc_tag_save(). sched.h
Including sched.h in percpu.h is fundamentally wrong as sched.h is the
initial place of all header recursions.

There is a reason why a lot of funtionalitiy has been split out of
sched.h into seperate headers over time in order to avoid that.
Yeah, it's definitely unfortunate. The issue here is that
alloc_tag_save() needs task_struct - we have to pull that in for
alloc_tag_save() to be inline, which we really want.

What if we moved task_struct to its own dedicated header? That might be
good to do anyways...
Yes, I agree that is the best way to handle it. I've prototyped
a more thorough header cleanup with good results (much improved
build speed) in the past, and most of the work to get there is
to seperate out structures like task_struct, mm_struct, net_device,
etc into headers that only depend on the embedded structure
definitions without needing all the inline functions associated
with them.

      Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help