[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[hurd] 10/12: libmachdev: avoid malloc overhead when sending package
From: |
Samuel Thibault |
Subject: |
[hurd] 10/12: libmachdev: avoid malloc overhead when sending package |
Date: |
Wed, 10 Dec 2014 15:16:59 +0000 |
This is an automated email from the git hooks/post-receive script.
sthibault pushed a commit to branch dde
in repository hurd.
commit b47d74ffd3a94bb7af90957c11356af8cf2f86dd
Author: Justus Winter <address@hidden>
Date: Wed Nov 26 13:32:15 2014 +0100
libmachdev: avoid malloc overhead when sending package
* libmachdev/net.c (netif_rx_handle): Allocate message buffer on the
stack.
---
libmachdev/net.c | 26 ++++++++++----------------
1 file changed, 10 insertions(+), 16 deletions(-)
diff --git a/libmachdev/net.c b/libmachdev/net.c
index e04fa80..220121a 100644
--- a/libmachdev/net.c
+++ b/libmachdev/net.c
@@ -223,7 +223,7 @@ static void
netif_rx_handle (char *data, int len, struct net_device *dev)
{
int pack_size;
- net_rcv_msg_t net_msg;
+ struct net_rcv_msg net_msg;
struct ether_header *eh;
struct packet_header *ph;
struct net_data *nd;
@@ -231,22 +231,17 @@ netif_rx_handle (char *data, int len, struct net_device
*dev)
nd = search_nd(dev);
assert (nd);
- /* Allocate a kernel message buffer. */
- net_msg = malloc (sizeof (*net_msg));
- if (!net_msg)
- return;
-
pack_size = len - sizeof (struct ethhdr);
/* remember message sizes must be rounded up */
- net_msg->msg_hdr.msgh_size =
+ net_msg.msg_hdr.msgh_size =
(((mach_msg_size_t) (sizeof (struct net_rcv_msg)
- - sizeof net_msg->sent
+ - sizeof net_msg.sent
+ sizeof (struct packet_header)
- NET_RCV_MAX + pack_size)) + 3) & ~3;
/* Copy packet into message buffer. */
- eh = (struct ether_header *) (net_msg->header);
- ph = (struct packet_header *) (net_msg->packet);
+ eh = (struct ether_header *) (net_msg.header);
+ ph = (struct packet_header *) (net_msg.packet);
memcpy (eh, data, sizeof (struct ether_header));
/* packet is prefixed with a struct packet_header,
see include/device/net_status.h. */
@@ -254,13 +249,12 @@ netif_rx_handle (char *data, int len, struct net_device
*dev)
ph->type = eh->h_proto;
ph->length = pack_size + sizeof (struct packet_header);
- net_msg->sent = FALSE; /* Mark packet as received. */
+ net_msg.sent = FALSE; /* Mark packet as received. */
- net_msg->header_type = header_type;
- net_msg->packet_type = packet_type;
- net_msg->net_rcv_msg_packet_count = ph->length;
- deliver_msg (net_msg, &nd->ifnet.port_list);
- free (net_msg);
+ net_msg.header_type = header_type;
+ net_msg.packet_type = packet_type;
+ net_msg.net_rcv_msg_packet_count = ph->length;
+ deliver_msg (&net_msg, &nd->ifnet.port_list);
}
/* Mach device interface routines. */
--
Alioth's /usr/local/bin/git-commit-notice on
/srv/git.debian.org/git/pkg-hurd/hurd.git
- [hurd] branch dde updated (607eaa3 -> 723ff43), Samuel Thibault, 2014/12/10
- [hurd] 08/12: libmachdev: fix size of `net_rcv_msg' message, Samuel Thibault, 2014/12/10
- [hurd] 06/12: libmachdev: drop unused function, Samuel Thibault, 2014/12/10
- [hurd] 02/12: eth-multiplexer: fix device_{get,set}_status calls, Samuel Thibault, 2014/12/10
- [hurd] 07/12: libmachdev: drop debugging printf, Samuel Thibault, 2014/12/10
- [hurd] 01/12: libmachdev: fix getting parameter for get_status, Samuel Thibault, 2014/12/10
- [hurd] 11/12: Merge remote-tracking branch 'incubator/dde' into dde-upstream, Samuel Thibault, 2014/12/10
- [hurd] 10/12: libmachdev: avoid malloc overhead when sending package,
Samuel Thibault <=
- [hurd] 03/12: eth-multiplexer: improve the netfs_demuxer function, Samuel Thibault, 2014/12/10
- [hurd] 09/12: libmachdev: drop static libmachdev.so hack, Samuel Thibault, 2014/12/10
- [hurd] 05/12: Remove obsolete device server stubs, Samuel Thibault, 2014/12/10
- [hurd] 04/12: Drop superfluous files, Samuel Thibault, 2014/12/10
- [hurd] 12/12: Merge branch 'dde-upstream' into dde, Samuel Thibault, 2014/12/10