diff options
author | Matt Macy <mmacy@FreeBSD.org> | 2018-07-04 02:47:16 +0000 |
---|---|---|
committer | Matt Macy <mmacy@FreeBSD.org> | 2018-07-04 02:47:16 +0000 |
commit | 6573d7580b851d794b6c3cbd5ee3d7bf0b4c0ccb (patch) | |
tree | 884d51d2f53b01ffe726dcba11e11ef5cc78b962 /sys/net/if_gre.h | |
parent | e98bd7507385206baca6b18e25a98cc0732bccfb (diff) | |
download | src-6573d7580b851d794b6c3cbd5ee3d7bf0b4c0ccb.tar.gz src-6573d7580b851d794b6c3cbd5ee3d7bf0b4c0ccb.zip |
epoch(9): allow preemptible epochs to compose
- Add tracker argument to preemptible epochs
- Inline epoch read path in kernel and tied modules
- Change in_epoch to take an epoch as argument
- Simplify tfb_tcp_do_segment to not take a ti_locked argument,
there's no longer any benefit to dropping the pcbinfo lock
and trying to do so just adds an error prone branchfest to
these functions
- Remove cases of same function recursion on the epoch as
recursing is no longer free.
- Remove the the TAILQ_ENTRY and epoch_section from struct
thread as the tracker field is now stack or heap allocated
as appropriate.
Tested by: pho and Limelight Networks
Reviewed by: kbowling at llnw dot com
Sponsored by: Limelight Networks
Differential Revision: https://reviews.freebsd.org/D16066
Notes
Notes:
svn path=/head/; revision=335924
Diffstat (limited to 'sys/net/if_gre.h')
-rw-r--r-- | sys/net/if_gre.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/net/if_gre.h b/sys/net/if_gre.h index da71fbbf7d50..cc8b08f98396 100644 --- a/sys/net/if_gre.h +++ b/sys/net/if_gre.h @@ -91,8 +91,8 @@ MALLOC_DECLARE(M_GRE); #endif #define GRE2IFP(sc) ((sc)->gre_ifp) -#define GRE_RLOCK() epoch_enter_preempt(net_epoch_preempt) -#define GRE_RUNLOCK() epoch_exit_preempt(net_epoch_preempt) +#define GRE_RLOCK() struct epoch_tracker gre_et; epoch_enter_preempt(net_epoch_preempt, &gre_et) +#define GRE_RUNLOCK() epoch_exit_preempt(net_epoch_preempt, &gre_et) #define GRE_WAIT() epoch_wait_preempt(net_epoch_preempt) #define gre_hdr gre_uhdr.hdr |