From: Sergei Organov <osv@javad.com>
To: Alan Cox <alan@redhat.com>
Cc: linux-serial@vger.kernel.org
Subject: Re: [Q] New tty flip interface doubt.
Date: Thu, 22 Jun 2006 11:33:15 +0400 [thread overview]
Message-ID: <87irmt63wk.fsf@javad.com> (raw)
In-Reply-To: 20060621134208.GA12884@devserv.devel.redhat.com
Alan Cox <alan@redhat.com> writes:
> On Wed, Jun 21, 2006 at 04:16:33PM +0400, Sergei Organov wrote:
>> tty_insert_flip_string(tty, data, length);
>>
>> instead has slightly more chances to transfer 'length' chars as
>> tty_insert_flip_string(), unlike tty_buffer_request_room(), loops to
>> find the memory.
>>
>> Overall, what's the canonical way to transfer 'length' chars from a
>> buffer 'buf' to the tty layer?
>
> tty_insert_flip_string called by itself will try to do the right thing. The
> tty_insert_flip_char interface can benefit a lot from you knowing the ideal
> buffer size to use so its very useful in the case of
>
> int bytes = inw(port->fifo);
> int count = tty_buffer_request_room(tty, bytes);
>
> while(...) {
> tty_insert_flip_char ..
>
> It is also useful if you want a linear buffer for ease of copying.
>
> In the USB case it may be helpful as it will try and allocate blocks
> of memory reflecting the size of the blocks to be pushed to the user
> rather than guessing. As you suggest for most cases it probably makes
> no real difference
Thanks, -- that's the answer I've more or less expected.
One more question, if I get memory for N bytes with
tty_prepare_flip_string() then store M (M <= N) bytes into the buffer,
how do I tell tty layer that only M bytes are in fact stored?
[I'm thinking about eliminating buffers allocation for urbs as well as
data copy when transferring data from USB subsystem to flip buffers of
the tty subsystem. Currently the flow is:
- allocate data buffer for urb.
- submit the urb to USB subsystem.
- copy received data from the buffer to tty (possibly allocating more
buffers in tty)
- deallocate the data buffer
- flip (possibly deallocating some buffers in tty)
and it seems that using tty buffers directly is a better idea:
- allocate N-bytes data buffer from tty and use it for urb
- submit the urb to USB subsystem
- flip M-bytes of data (M <= N) in USB receive callback.
]
--
Sergei.
next prev parent reply other threads:[~2006-06-22 7:33 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-21 12:16 [Q] New tty flip interface doubt Sergei Organov
2006-06-21 13:42 ` Alan Cox
2006-06-22 7:33 ` Sergei Organov [this message]
2006-06-22 12:56 ` Alan Cox
2006-06-22 15:17 ` Sergei Organov
2006-06-23 13:16 ` Alan Cox
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=87irmt63wk.fsf@javad.com \
--to=osv@javad.com \
--cc=alan@redhat.com \
--cc=linux-serial@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).