From: Rusty Russell <rusty@rustcorp.com.au>
To: Greg KH <greg@kroah.com>
Cc: Patrick Mochel <mochel@osdl.org>, linux-kernel@vger.kernel.org
Subject: Re: [RFC] add kobject to struct module
Date: Thu, 11 Sep 2003 18:18:12 +1000 [thread overview]
Message-ID: <20030911081836.E8AFD2C04D@lists.samba.org> (raw)
In-Reply-To: Your message of "Wed, 10 Sep 2003 23:26:49 MST." <20030911062649.GA10454@kroah.com>
In message <20030911062649.GA10454@kroah.com> you write:
> On a site note, can't you just use a "struct completion" to use for your
> waiting? Or do you need to do something special here?
Hmm, *good* question. Think...
Ah, it's because when someone's waiting for the reference count to hit
zero, we wake them *every* time we decrement. With the reference
count spread across every cpu, it's the only way:
static inline void module_put(struct module *module)
{
if (module) {
unsigned int cpu = get_cpu();
local_dec(&module->ref[cpu].count);
/* Maybe they're waiting for us to drop reference? */
if (unlikely(!module_is_live(module)))
wake_up_process(module->waiter);
put_cpu();
}
}
This doesn't really fit with a completion, unfortunately.
> > 1) Adopt a faster, smaller implementation of alloc_percpu (this patch
> > exists, needs some arch-dependent love for ia64).
> > 2) Use it to generalize the current module reference count scheme to
> > a "bigref_t" (I have a couple of these)
> > 3) Use that in kobjects.
>
> Hm, I don't know if kobjects really need to get that heavy.
I'm not sure either: really depends on kobject usage. I was thinking
struct netdevice. The size for UP is the same, the size for SMP is
ptr + sizeof(int) + sizeof(atomic_t)*NR_CPUs.
> But yes, that's all 2.7 dreams :)
Cheers,
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
next prev parent reply other threads:[~2003-09-11 8:18 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-09-09 22:24 [RFC] add kobject to struct module Greg KH
2003-09-10 0:13 ` Greg KH
2003-09-10 3:31 ` Rusty Russell
2003-09-10 4:11 ` Greg KH
2003-09-10 8:07 ` Rusty Russell
2003-09-10 15:26 ` Patrick Mochel
2003-09-11 1:13 ` Rusty Russell
2003-09-11 6:26 ` Greg KH
2003-09-11 8:18 ` Rusty Russell [this message]
2003-09-11 17:15 ` Greg KH
2004-02-24 23:29 ` Greg KH
2004-03-05 14:34 ` Rusty Russell
2004-05-07 21:28 ` Greg KH
2003-09-10 23:06 ` Greg KH
2003-09-11 2:33 ` Rusty Russell
2003-09-10 23:32 ` Russell King
2003-09-10 23:45 ` Greg KH
2003-09-11 0:04 ` Mike Fedyk
2003-09-11 0:21 ` Greg KH
2003-09-11 2:10 ` Rusty Russell
2003-09-11 2:04 ` Rusty Russell
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=20030911081836.E8AFD2C04D@lists.samba.org \
--to=rusty@rustcorp.com.au \
--cc=greg@kroah.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mochel@osdl.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 NNTP newsgroup(s).