Commit graph

190 commits

Author SHA1 Message Date
Evan Huus
bab105d094 Add convenience macros wmem_new and wmem_new0
svn path=/trunk/; revision=46941
2013-01-04 22:11:13 +00:00
Evan Huus
8331c0e495 Add a cast to pacify MSVC.
svn path=/trunk/; revision=46850
2012-12-29 21:34:57 +00:00
Evan Huus
563d64862a Implement wmem_strbuf_append_printf.
svn path=/trunk/; revision=46846
2012-12-29 20:37:53 +00:00
Evan Huus
0c66691b92 Add a strict allocator that does canaries and various other things, for
platforms which don't have Valgrind.

Valgrind is still the better choice on platforms which support it.

svn path=/trunk/; revision=46828
2012-12-28 17:04:23 +00:00
Evan Huus
97ec82d02e Make the alignment amount for the wmem block allocator into a #define
and use what appears to be the sanest calculation for it that I can find.

svn path=/trunk/; revision=46820
2012-12-27 23:11:47 +00:00
Evan Huus
bb3b34d7bf Pre-declare just the enum, and not the typedef to avoid redefinition warnings.
svn path=/trunk/; revision=46818
2012-12-27 22:59:29 +00:00
Evan Huus
442b61d0a4 Change the format of the environment variable slightly to allow overriding
allocator choice to use any specific allocator, not just simple.

svn path=/trunk/; revision=46816
2012-12-27 22:51:33 +00:00
Evan Huus
dc98756ca4 Store the type of each wmem allocator.
svn path=/trunk/; revision=46814
2012-12-27 22:31:42 +00:00
Guy Harris
8ed7a73e22 Fix a bunch of warnings.
Cast away some implicit 64-bit-to-32-bit conversion errors due to use of
sizeof.

Cast away some implicit 64-bit-to-32-bit conversion errors due to use of
strtol() and strtoul().

Change some data types to avoid those implicit conversion warnings.

When assigning a constant to a float, make sure the constant isn't a
double, by appending "f" to the constant.

Constify a bunch of variables, parameters, and return values to
eliminate warnings due to strings being given const qualifiers.  Cast
away those warnings in some cases where an API we don't control forces
us to do so.

Enable a bunch of additional warnings by default.  Note why at least
some of the other warnings aren't enabled.

randpkt.c and text2pcap.c are used to build programs, so they don't need
to be in EXTRA_DIST.

If the user specifies --enable-warnings-as-errors, add -Werror *even if
the user specified --enable-extra-gcc-flags; assume they know what
they're doing and are willing to have the compile fail due to the extra
GCC warnings being treated as errors.

svn path=/trunk/; revision=46748
2012-12-26 05:57:06 +00:00
Guy Harris
292b386089 See if *this* squelches the MSVC errors.
svn path=/trunk/; revision=46611
2012-12-19 04:30:02 +00:00
Evan Huus
3739c083bf Implement a basic singly-linked for wmem.
Re-implement the stack as a wrapper for that.

svn path=/trunk/; revision=46607
2012-12-19 01:37:28 +00:00
Evan Huus
77d69b36b2 Try to fix windows builds - MSVC doesn't like g_assert_not_reached() ?
svn path=/trunk/; revision=46606
2012-12-19 01:08:21 +00:00
Evan Huus
03af5455c7 Make the wmem string-buffer marginally useful but providing some accessors so
it's not a write-only data structure.

svn path=/trunk/; revision=46605
2012-12-19 00:51:48 +00:00
Evan Huus
5cf858ec52 Dispatch all allocator creations through a single function using an enum to
determine the desired type. This has two advantages over the old way:
 - just one environment variable for valgrind to override in order to guarantee
   that ALL allocators use memory it can track, and just one place to check that
   variable
 - allocator owners no longer have to include headers specific to their
   allocator, allowing them to change allocators without adjusting all their
   #includes

svn path=/trunk/; revision=46604
2012-12-19 00:43:36 +00:00
Evan Huus
561525cbb5 Rename allocator_glib to allocator_simple, since the block allocator also
uses glib and 'simple' describes the intention far better.

svn path=/trunk/; revision=46603
2012-12-18 23:36:45 +00:00
Evan Huus
8b69e3ee22 Use 'new' instead of 'create' a consistent manner.
svn path=/trunk/; revision=46601
2012-12-18 23:25:11 +00:00
Evan Huus
92cfec56b8 Basic wmem string-buffer. Not yet feature-equivalent to the emem version.
svn path=/trunk/; revision=46540
2012-12-15 00:46:36 +00:00
Evan Huus
ea47ca37b1 Put in a cast to silence a stupid MSVC warning.
svn path=/trunk/; revision=46473
2012-12-08 22:00:17 +00:00
Evan Huus
af700fa79a Make sure the wmem block allocator returns aligned memory.
svn path=/trunk/; revision=46468
2012-12-08 21:08:29 +00:00
Evan Huus
f4a786638b Add strdup_printf and strdup_vprintf to the wmem string utilities.
svn path=/trunk/; revision=46177
2012-11-25 14:16:50 +00:00
Evan Huus
0d1f86c33e Allocate wmem memory in blocks of 8MB, not 10, because powers of two are nice.
svn path=/trunk/; revision=46175
2012-11-25 13:58:06 +00:00
Evan Huus
706211b642 Make the wmem scopes friendly to the valgrind script like emem is.
svn path=/trunk/; revision=46171
2012-11-24 19:02:05 +00:00
Evan Huus
ea7e8174c0 Reorder the wmem scopes to be ordered by lifetime, which makes more sense than
the old ordering.

svn path=/trunk/; revision=46168
2012-11-24 18:47:50 +00:00
Evan Huus
a4b164680b Add a simple block allocator to wmem (no canaries or anything yet) and use it
for packet-scope memory.

svn path=/trunk/; revision=46166
2012-11-24 18:42:56 +00:00
Evan Huus
9f03dfb42d Enter and leave wmem's file scope appropriately.
svn path=/trunk/; revision=45977
2012-11-09 00:08:27 +00:00
Evan Huus
82501433e3 Use const in wmem where possible.
svn path=/trunk/; revision=45976
2012-11-08 23:18:26 +00:00
Evan Huus
5d6b306391 Wmem stack implementation using the wmem slab implementation to allocate frames.
svn path=/trunk/; revision=45881
2012-11-03 17:34:28 +00:00
Evan Huus
2737b7b7d3 Add wmem scopes for packet and file lifetimes. The file lifetime scope isn't
yet initialized because I can't figure out where the enter() and leave() calls
should go - the obvious place in packet.c causes a lot of assertion errors.

svn path=/trunk/; revision=45879
2012-11-03 15:49:15 +00:00
Evan Huus
6ef55f30d8 Rename wmem_permanent_scope -> wmem_epan_scope to reflect the fact that it
is technically scoped to the library, not the process. It's also shorter :)

svn path=/trunk/; revision=45877
2012-11-03 15:08:00 +00:00
Evan Huus
a02e765e00 Experimental slab allocator logic for wmem.
Thanks to Sébastien Tandel for the idea.

svn path=/trunk/; revision=45809
2012-10-27 15:35:32 +00:00
Evan Huus
b464dcd888 Create init and cleanup functions for wmem as a whole.
Call them from epan_init() and epan_cleanup().
Expose a permanent wmem scope for allocations that should only be freed when
epan is done (which is *not* necessarily when the program finishes).

svn path=/trunk/; revision=45805
2012-10-27 02:42:05 +00:00
Evan Huus
2ea364607a Make the allocator destructor part of wmem_allocator_t. This avoids two
potential bugs:
 - calling the wrong destroy function on an allocator
 - a pool allocator forgetting to call free_all on itself in the destructor

Also, fix potential typedef redefinition warning in wmem_allocator_glib.h

svn path=/trunk/; revision=45804
2012-10-27 02:29:46 +00:00
Evan Huus
e6639e035e Don't use g_slist_free_full() it needs a more recent GLIB than we officially
require.

svn path=/trunk/; revision=45781
2012-10-24 22:14:32 +00:00
Guy Harris
1340194a62 wmem_allocator_t is defined in wmem_core.h; redefining it elsewhere will
cause errors.

svn path=/trunk/; revision=45771
2012-10-24 18:38:55 +00:00
Guy Harris
1bc158e695 Include wmem_core.h to define the wmem_allocator_t typedef.
svn path=/trunk/; revision=45753
2012-10-24 05:52:55 +00:00
Guy Harris
7079f979c3 We're no longer defining the structure in a typedef definition, so we
don't want the typedef name after the structure definition.

svn path=/trunk/; revision=45752
2012-10-24 05:37:15 +00:00
Guy Harris
3e1dae3c8d Make it a little more like the Makefile.am for the ftypes subdirectory.
Get rid of reference to non-existent Custom.common file.

svn path=/trunk/; revision=45751
2012-10-24 05:30:14 +00:00
Guy Harris
c1e2438551 Have wmem_core.h define the wmem_allocator_t typedef, with an incomplete
structure definition of struct _wmem_allocator_t; have wmem_allocator.h
give the complete structure definition.  That avoids complaints about
the typedef being redefined.

svn path=/trunk/; revision=45750
2012-10-24 05:21:43 +00:00
Evan Huus
4e3ddfc4c1 Fix autotools build - missed a few spots that needed updating for wmem.
svn path=/trunk/; revision=45748
2012-10-24 03:44:34 +00:00
Evan Huus
84cc3daa3b Basic skeleton for wmem.
https://www.wireshark.org/lists/wireshark-dev/201210/msg00178.html

svn path=/trunk/; revision=45746
2012-10-24 02:04:40 +00:00