diff options
author | Jeff Darcy <jdarcy@redhat.com> | 2012-10-16 14:21:17 -0400 |
---|---|---|
committer | Anand Avati <avati@redhat.com> | 2012-10-25 00:05:10 -0700 |
commit | c7f7f134a7e2ee14d07d16d96c7849c6fd310693 (patch) | |
tree | 4c5122b77d668d2b53809a8a2dd4a3002ca2b7ac /libglusterfs/src/stack.h | |
parent | 6be9a19b940dd52cdc6e2df4b212e6221b2cfcb2 (diff) |
core: add STACK_WIND_TAIL for more efficient default_xxx.
Change-Id: Ic38e2183d1320bb17c014aca33779471c8db5d5f
BUG: 867132
Signed-off-by: Jeff Darcy <jdarcy@redhat.com>
Reviewed-on: http://review.gluster.org/4092
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'libglusterfs/src/stack.h')
-rw-r--r-- | libglusterfs/src/stack.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/libglusterfs/src/stack.h b/libglusterfs/src/stack.h index 63307192ae5..b14b08dbb9a 100644 --- a/libglusterfs/src/stack.h +++ b/libglusterfs/src/stack.h @@ -254,6 +254,20 @@ STACK_RESET (call_stack_t *stack) } while (0) +/* make a call without switching frames */ +#define STACK_WIND_TAIL(frame, obj, fn, params ...) \ + do { \ + xlator_t *old_THIS = NULL; \ + \ + frame->this = obj; \ + frame->wind_to = #fn; \ + old_THIS = THIS; \ + THIS = obj; \ + fn (frame, obj, params); \ + THIS = old_THIS; \ + } while (0) + + /* make a call with a cookie */ #define STACK_WIND_COOKIE(frame, rfn, cky, obj, fn, params ...) \ do { \ |