Remove slab.h and replace its last remaining usage with glib slices.

Take the opportunity to deduplicate some code that was common to both an
if block and its else block.

svn path=/trunk/; revision=48227
This commit is contained in:
Evan Huus 2013-03-10 14:52:14 +00:00
parent 8b215accd0
commit bbb4058954
4 changed files with 3 additions and 93 deletions

View File

@ -40,7 +40,6 @@
#include <epan/conversation.h>
#include <epan/reassemble.h>
#include <epan/tap.h>
#include <epan/slab.h>
#include <epan/expert.h>
#include "packet-tcp.h"
@ -441,16 +440,6 @@ static gboolean tcp_relative_seq = TRUE;
static gboolean tcp_track_bytes_in_flight = TRUE;
static gboolean tcp_calculate_ts = FALSE;
/* SLAB allocator for tcp_unacked structures
*/
SLAB_ITEM_TYPE_DEFINE(tcp_unacked_t)
static SLAB_FREE_LIST_DEFINE(tcp_unacked_t)
#define TCP_UNACKED_NEW(fi) \
SLAB_ALLOC(fi, tcp_unacked_t)
#define TCP_UNACKED_FREE(fi) \
SLAB_FREE(fi, tcp_unacked_t)
#define TCP_A_RETRANSMISSION 0x0001
#define TCP_A_LOST_PACKET 0x0002
#define TCP_A_ACK_LOST_PACKET 0x0004
@ -1129,7 +1118,7 @@ finished_checking_retransmission_type:
nextseq = seq+seglen;
if (seglen || flags&(TH_SYN|TH_FIN)) {
/* add this new sequence number to the fwd list */
TCP_UNACKED_NEW(ual);
ual = g_slice_new(tcp_unacked_t);
ual->next=tcpd->fwd->segments;
tcpd->fwd->segments=ual;
ual->frame=pinfo->fd->num;
@ -1223,14 +1212,12 @@ finished_checking_retransmission_type:
if (!prevual) {
tcpd->rev->segments = tmpual;
TCP_UNACKED_FREE(ual);
ual = tmpual;
}
else{
prevual->next = tmpual;
TCP_UNACKED_FREE(ual);
ual = tmpual;
}
g_slice_free(tcp_unacked_t, ual);
ual = tmpual;
}
/* how many bytes of data are there in flight after this frame

View File

@ -24,7 +24,6 @@
#include <ftypes-int.h>
#include <glib.h>
#include "../slab.h"
#include "ftypes.h"

View File

@ -38,7 +38,6 @@
#include "plugins.h"
#include "proto.h"
#include "epan_dissect.h"
#include "slab.h"
#include "tvbuff.h"
#include "emem.h"
#include "charsets.h"

View File

@ -1,75 +0,0 @@
/* slab.h
* Definitions for very simple slab handling
*
* $Id$
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef __SLAB_H__
#define __SLAB_H__
#define NITEMS_PER_SLAB 100
/*
* Generate declaration of a union type containing the specified type of
* slab-allocated item, and a pointer to an object of that type, for use
* in the macros below.
*/
#define SLAB_ITEM_TYPE_DEFINE(type) \
union type ## slab_item { \
type slab_item; \
union type ## slab_item *next_free; \
};
/*
* Generate definition of the free list pointer.
*/
#define SLAB_FREE_LIST_DEFINE(type) \
union type ## slab_item *type ## _free_list = NULL;
/*
* Generate an external declaration of the free list pointer.
*/
#define SLAB_FREE_LIST_DECLARE(type) \
union type ## slab_item *type ## _free_list;
/* we never free any memory we have allocated, when it is returned to us
we just store it in the free list until (hopefully) it gets used again
*/
#define SLAB_ALLOC(item, type) \
if(!type ## _free_list){ \
int i; \
union type ## slab_item *tmp; \
tmp=g_malloc(NITEMS_PER_SLAB*sizeof(*tmp)); \
for(i=0;i<NITEMS_PER_SLAB;i++){ \
tmp[i].next_free = type ## _free_list; \
type ## _free_list = &tmp[i]; \
} \
} \
item = &(type ## _free_list->slab_item); \
type ## _free_list = type ## _free_list->next_free;
#define SLAB_FREE(item, type) \
{ \
((union type ## slab_item *)(void *)item)->next_free = type ## _free_list; \
type ## _free_list = (union type ## slab_item *)(void *)item; \
}
#endif /* slab.h */