From: Tom Zanussi <zanussi@us.ibm.com>
To: "Perez-Gonzalez, Inaky" <inaky.perez-gonzalez@intel.com>
Cc: "'Tom Zanussi'" <zanussi@us.ibm.com>,
"'karim@opersys.com'" <karim@opersys.com>,
"'linux-kernel@vger.kernel.org'" <linux-kernel@vger.kernel.org>
Subject: RE: [patch] printk subsystems
Date: Tue, 22 Apr 2003 16:52:53 -0500 [thread overview]
Message-ID: <16037.47541.643693.126049@lepton.softprops.com> (raw)
In-Reply-To: <A46BBDB345A7D5118EC90002A5072C780C263A3B@orsmsx116.jf.intel.com>
Trimmed the cc list to those of us still here...
Perez-Gonzalez, Inaky writes:
>
>
> > From: Tom Zanussi [mailto:zanussi@us.ibm.com]
> >
> > In relayfs, the event can be generated directly into the space
> > reserved for it - in fact this is exactly what LTT does. There aren't
> > two separate steps, one 'generating' the event and another copying it
> > to the relayfs buffer, if that's what you mean.
>
> In this case, what happens if the user space, through mmap, copies
> while the message is half-baked (ie, from another CPU) ... won't it
> be inconsistent?
>
There's a count kept, per sub-buffer, that's updated after each write.
If this count doesn't match the expected size of the sub-buffer, the
reader can ignore the incomplete buffer and come back to it later.
The count is maintained automatically by relay_write(); if you're
writing directly into the channel as LTT does though, part of the task
is to call relay_commit() after the write, which updates the count and
maintains consistency.
> > Well, I'm not sure I understand the details of kue all that well, so
> > let me know if I'm missing something, but for kue events to really be
> > self-contained, wouldn't the data need to be copied into the event
> > unless the data structure containing them was guaranteed to exist
> > until the event was disposed of one way or another?
>
> Yes, you have to guarantee the existence of the event data structures
> (the 'struct kue', the embedded 'struct kue_user' and the event data
> itself); if they are embedded into another structure that will dissa-
> pear, you can choose to:
>
> (a) recall the event [if it is recallable or makes sense to do so]
> (b) dynamically allocate the event header and data, generate it
> into that dynamic space.
> (c) dynamically allocate and copy [slow]
>
> (this works now; however, once I finish the destructor code, it
> will give you the flexibility to use other stuff than just kmalloc()).
>
> You can play many tricks here, but that depends on your needs,
> requirements and similar stuff.
>
Well, kmalloc() seems like the most straightforward and convenient way
of managing space for all these individual events, if not the most
efficient. Are you thinking that sub-allocating them out of a larger
buffer might make more sense, for instance? If so, I'd suggest
relayfs for that. ;-) Just kidding, but it does seem you'll have a
certain amount of bookkeeping overhead and will need to deal with
things like fragmentation if you're going to manage a private memory
pool for everything.
--
Regards,
Tom Zanussi <zanussi@us.ibm.com>
IBM Linux Technology Center/RAS
next prev parent reply other threads:[~2003-04-22 21:41 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-22 19:02 [patch] printk subsystems Perez-Gonzalez, Inaky
2003-04-22 19:03 ` H. Peter Anvin
2003-04-22 21:52 ` Tom Zanussi [this message]
-- strict thread matches above, loose matches on Subject: below --
2003-04-24 18:56 Manfred Spraul
2003-04-24 19:10 ` bob
2003-04-23 0:28 Perez-Gonzalez, Inaky
2003-04-22 22:53 Perez-Gonzalez, Inaky
2003-04-23 3:58 ` Tom Zanussi
2003-04-22 18:46 Perez-Gonzalez, Inaky
2003-04-22 23:28 ` Karim Yaghmour
2003-04-22 5:09 Perez-Gonzalez, Inaky
2003-04-24 18:22 ` bob
2003-04-22 4:02 Perez-Gonzalez, Inaky
2003-04-22 5:52 ` Karim Yaghmour
2003-04-22 6:04 ` Tom Zanussi
2003-04-22 3:04 Perez-Gonzalez, Inaky
2003-04-22 6:00 ` Tom Zanussi
2003-04-22 2:49 Perez-Gonzalez, Inaky
2003-04-22 4:34 ` Karim Yaghmour
2003-04-21 18:42 Perez-Gonzalez, Inaky
2003-04-21 18:23 Perez-Gonzalez, Inaky
2003-04-21 18:30 ` H. Peter Anvin
2003-04-17 19:58 Perez-Gonzalez, Inaky
2003-04-17 20:34 ` Karim Yaghmour
2003-04-17 21:03 ` Perez-Gonzalez, Inaky
2003-04-17 21:37 ` Tom Zanussi
2003-04-18 7:21 ` Tom Zanussi
2003-04-18 7:42 ` Greg KH
2003-04-21 15:56 ` Karim Yaghmour
2003-04-08 23:15 Chuck Ebbert
2003-04-07 20:13 Martin Hicks
2003-04-08 18:41 ` Pavel Machek
2003-04-08 20:02 ` Jes Sorensen
2003-04-08 21:02 ` Pavel Machek
2003-04-08 21:10 ` H. Peter Anvin
2003-04-08 21:57 ` Pavel Machek
2003-04-08 22:02 ` Jes Sorensen
2003-04-08 22:05 ` H. Peter Anvin
2003-04-08 22:55 ` Martin Hicks
2003-04-08 23:10 ` Randy.Dunlap
2003-04-14 18:33 ` Patrick Mochel
2003-04-14 22:33 ` Daniel Stekloff
2003-04-16 18:42 ` Patrick Mochel
2003-04-16 12:35 ` Daniel Stekloff
2003-04-16 19:16 ` Martin Hicks
2003-04-16 12:43 ` Daniel Stekloff
2003-04-17 15:56 ` Martin Hicks
2003-04-17 13:58 ` Karim Yaghmour
2003-04-15 13:27 ` Martin Hicks
2003-04-15 14:40 ` Karim Yaghmour
2003-04-08 22:00 ` Jes Sorensen
2003-04-11 19:21 ` Martin Hicks
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=16037.47541.643693.126049@lepton.softprops.com \
--to=zanussi@us.ibm.com \
--cc=inaky.perez-gonzalez@intel.com \
--cc=karim@opersys.com \
--cc=linux-kernel@vger.kernel.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).