* Greatly reduce the complexity of the LWKT messaging and port abstraction.
authorMatthew Dillon <dillon@dragonflybsd.org>
Wed, 23 May 2007 08:57:10 +0000 (08:57 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Wed, 23 May 2007 08:57:10 +0000 (08:57 +0000)
commit4599cf191ad85f322f473cc78b6b8936bb6be383
tree3fb115aa875118346fdbdb8858b7e61fd85df3a1
parent46877004caa706ca1ae5de3a158ced6b069abbbf
* Greatly reduce the complexity of the LWKT messaging and port abstraction.
  Significantly reduce the overhead of the subsystem.

* The message abort algorithm has been rewritten.  It now sends a
  separate message to issue the abort instead of trying to requeue
  the original message.  This also means the TAILQ embedded in the
  lwkt_msg structure can be used by unrelated code during processing
  of the message.

* Numerous MSGF_ flags have been removed, and all the LWKT msg/port
  algorithms have been rewritten and simplified.  The message structure
  is now only touched by the current owner in all situations.

* Numerous structural fields have been removed.  In particular, the
  fields used for message abort sequencing have been simplified and
  we do not try to embed a 'command' field in the base LWKT message
  any more.

* Clean up the netmsg abstraction, which is used all over the network stack.
  Instead of trying to overload fields in lwkt_msg we now simply extend
  the base lwkt_msg into struct netmsg.  The function dispatch now takes
  a netmsg and returns void (before we had to return EASYNC), and we no
  longer need weird casts.

  Accept/connect message aborts are now greatly simplified.
31 files changed:
sys/bus/usb/usb_ethersubr.c
sys/dev/acpica5/Osd/OsdSchedule.c
sys/kern/kern_poll.c
sys/kern/lwkt_msgport.c
sys/kern/uipc_msg.c
sys/kern/uipc_socket2.c
sys/kern/uipc_syscalls.c
sys/net/netisr.c
sys/net/netisr.h
sys/net/netmsg.h
sys/net/netmsg2.h [new file with mode: 0644]
sys/net/pf/pf.c
sys/net/ppp/if_ppp.c
sys/net/route.c
sys/netgraph/netgraph/ng_base.c
sys/netinet/if_ether.c
sys/netinet/ip6.h
sys/netinet/ip_input.c
sys/netinet/tcp_subr.c
sys/netinet/tcp_syncache.c
sys/netinet/tcp_usrreq.c
sys/netinet6/ip6_input.c
sys/netproto/atalk/aarp.c
sys/netproto/atalk/at_extern.h
sys/netproto/atalk/ddp_input.c
sys/netproto/atm/atm_subr.c
sys/netproto/ipx/ipx_input.c
sys/netproto/natm/natm.c
sys/netproto/ns/ns_input.c
sys/sys/msgport.h
sys/sys/msgport2.h