- 03 Dec, 2012 7 commits
-
-
Rusty Russell authored
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
We sanity check tal headers by ensuring that the pointers are in the bounds of things we've allocated. But the first one we check is the prop ptr, which may also be a literal: this is_literal() dereferences the pointer, which means we usually crash here if it's not a tal object. Move that last, and we have far more success with our sanity checking. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
All the effort trying to keep the header size down to 2 pointers turns out to be wasted. In addition, getting the parent of a tal pointer is now much faster. ./samba-allocs talloc.dump --tal-size: Before: Virtual size = 9633792, RSS = 3952640 After: Virtual size = 9793536, RSS = 3948544 And we're much faster now, esp. on free. ./samba-allocs talloc.dump --tal: Before: Tal time: 2718068ns Tal_free time: 3360258ns Single tal_free time: 1667412ns After: Tal time: 2788287ns Tal_free time: 2290167ns Single tal_free time: 1566998ns Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Header from folded patch 'tal-fix-set-destroying-bit.patch': tal: fix destroying bit usage. Actually looking at a destroying contexts' parent didn't work, and a couple of places didn't filter out the destroying bit. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
If we see an ccan include line in an example, we add that to the dependencies to try to build the example, but we didn't handle nested modules. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
ccanlint would abort with 'Malformed line 53' if there was a bad header. That's very poor, and deeply unhelpful. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
- 22 Nov, 2012 10 commits
-
-
Rusty Russell authored
We need ccan/take here. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Header from folded patch 'path-talloc-take.patch': tal/path: accept take() for arguments. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Tal-enhanced string routines, copied from str_talloc (which I also wrote). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Our first nested module; easy because noone else relies on it. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Removing this assumption should allow nested modules. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Far more effective to just skip valgrind and gcov if you want fast results; that's what we do for the summary already. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Clumsier than using wildcards, but that breaks down with nested modules anyway. In the longer term, we want ccantool to do the building, but for the moment make is a necessary evil. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
- 21 Nov, 2012 10 commits
-
-
Rusty Russell authored
In particular, we might need the C files for foreach and err. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Firstly, we should always ask before altering files. Secondly, we are not in the module directory: we need to use m->info_file->fullname. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Don't risk reading partially-constructed files. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
This makes it convenient to do: ptr = tal_free(ptr); Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
This makes error handling much more convenient, since take is usually used for chaining functions. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
TAL_TAKE is awkward to use, particularly on functions which take multiple arguments. Instead, record annotations for pointers due to be freed in the callee. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Sometimes you want to duplicate and enlarge in one step: particularly with TAL_TAKE. It's also typesafe, unlike tal_memdup(). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
- 20 Nov, 2012 1 commit
-
-
Rusty Russell authored
Instead of trying to force people to use the return value, pass a pointer. This makes it easier if you want to handle failure: no overwriting the old pointer! Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
- 19 Nov, 2012 6 commits
-
-
Rusty Russell authored
Always good form to have cleanup functions preserve errno. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Rusty forgets a git add. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
We call remove_node() in tal_steal, then re-use the node. So it's important that we always unlink the group property from the node for that case. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Don't open-code the list_head_init: left over from performance debugging. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
First, we need to update the bounds for the group property allocated with the children property, just in case it's at the end of the allocations. Second, we need to allow the tal_check() code to accept the pointer to the null parent's group property. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
- 18 Nov, 2012 5 commits
-
-
Rusty Russell authored
This is based on a very simple dump of S4's talloc tree, which we try to duplicate using tal. The benchmarks are simply to allocate all the nodes, free all the nodes individually, and a top-level free. Size results (32-bit x86): $ ./samba-allocs talloc.dump --talloc-size Read 25998 nodes Virtual size = 10469376, RSS = 4759552 $ ./samba-allocs talloc.dump --tal-size Read 25998 nodes Virtual size = 9629696, RSS = 3948544 Speed results: $ ./samba-allocs talloc.dump Read 25998 nodes Malloc time: 1912082ns Free time: 1384892ns Talloc time: 2851531ns talloc_free time: 2133801ns Single talloc_free time: 1696298ns Tal time: 2686952ns Tal_free time: 3316153ns Single tal_free time: 1639407ns Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
We modify it a bit (to do more allocations before freeing). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
The really size-conscious can override them, but it's great for debugging to have names on the nodes. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
TAL_TAKE provides a magic context meaning "consume my args and return a replacement". This is useful for writing convenience functions, though not so useful in the standard routines here. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
Rusty Russell authored
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-
- 15 Nov, 2012 1 commit
-
-
Rusty Russell authored
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-