]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
epoch(9): allow preemptible epochs to compose
authormmacy <mmacy@FreeBSD.org>
Wed, 4 Jul 2018 02:47:16 +0000 (02:47 +0000)
committermmacy <mmacy@FreeBSD.org>
Wed, 4 Jul 2018 02:47:16 +0000 (02:47 +0000)
commit14de8a2820efdf121114eefd291e6427fa353690
tree884d51d2f53b01ffe726dcba11e11ef5cc78b962
parent36a93b0c2f8c08be8ba2041bcb24bb42d271deac
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
44 files changed:
sys/dev/cxgbe/cxgbei/cxgbei.c
sys/dev/cxgbe/tom/t4_connect.c
sys/dev/cxgbe/tom/t4_cpl_io.c
sys/dev/cxgbe/tom/t4_listen.c
sys/dev/cxgbe/tom/t4_tls.c
sys/dev/hwpmc/hwpmc_mod.c
sys/kern/subr_epoch.c
sys/net/if.c
sys/net/if_gif.h
sys/net/if_gre.h
sys/net/if_lagg.c
sys/net/if_me.c
sys/net/if_var.h
sys/net/route.c
sys/net/rtsock.c
sys/netinet/in_gif.c
sys/netinet/in_pcb.c
sys/netinet/in_pcb.h
sys/netinet/ip_divert.c
sys/netinet/ip_encap.c
sys/netinet/ip_gre.c
sys/netinet/raw_ip.c
sys/netinet/tcp_hpts.c
sys/netinet/tcp_hpts.h
sys/netinet/tcp_input.c
sys/netinet/tcp_stacks/fastpath.c
sys/netinet/tcp_stacks/rack.c
sys/netinet/tcp_stacks/tcp_rack.h
sys/netinet/tcp_subr.c
sys/netinet/tcp_timer.c
sys/netinet/tcp_timer.h
sys/netinet/tcp_timewait.c
sys/netinet/tcp_usrreq.c
sys/netinet/tcp_var.h
sys/netinet/udp_usrreq.c
sys/netinet6/icmp6.c
sys/netinet6/in6_gif.c
sys/netinet6/ip6_gre.c
sys/netinet6/raw_ip6.c
sys/netinet6/udp6_usrreq.c
sys/sys/epoch.h
sys/sys/epoch_private.h [new file with mode: 0644]
sys/sys/pmckern.h
sys/sys/proc.h