Dear Bernd,
Really thank you for your advice.
What makes me to have this thought is I want to improve the
performance of my software. Normally, I use user-space socket
interface to receive UPD/TCP packets. But for my project, in fact,
another device will process the payload of the packets, so I have to
send the data to kernel driver again. That means I have to do a lot data
transfer, such as from kernel to user-space, then from user-space to
kernel again.
If I can directly receive TCP/UDP packets from kernel space and
send them into my device. Does that mean I can save a lot of CPU time?
Of course, I'm not sure if such this crazy thing can help me,
maybe it is a very silly idea.
In addition, I need to receive high bit rate data stream
[20Mbit/s] from ip port. So performance is really important for me.
Terry
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Bernd
Petrovitsch
Sent: Friday, November 09, 2007 5:01 PM
To: Tang Rui
Cc: [email protected]
Subject: Re: Any one has experience about TCP/UDP develepment in
LINUXkernel space.
On Fri, 2007-11-09 at 10:17 +0800, Tang Rui wrote:
[...]
> I want to develop a TCP/UDP daemon in LINUX kernel-space, I use
> this demon to receive data from specified ip port, and then injector
> the data to another driver or device.
>
> Most of cases, we can use user-space socket interface to receive
> TCP/UDP packet , then send data to driver by driver's user-space file
> control interface ,
>
> Why not we do such thing in kernel space? Dose any one have
It buys much less performance then you think/believe if you implement it
sanely in user-space - e.g. learn about the sendfile() and splice()
system-calls.
If you need almost-realtime, learn about POSIX real-time priorities.
And there are other means to solve other potential problems good enough
for almost all applications.
If you need real hard real-time, learn about RTAI.
And you have to cope with all the kernel-internal programming
restrictions, non-existing debug features, risk of
killing/booting/freezing the system just because your daemon has
a silly bug.
> experience about this?
No, because in almost all cases the network traffic is slow enough for
user-space. So perhaps you can describe what's the primary reason you
want to so it in the kernel?
Bernd
--
Firmix Software GmbH http://www.firmix.at/
mobil: +43 664 4416156 fax: +43 1 7890849-55
Embedded Linux Development and Services
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [EMAIL PROTECTED]
Please read the FAQ at http://kernelnewbies.org/FAQ
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [EMAIL PROTECTED]
Please read the FAQ at http://kernelnewbies.org/FAQ