Check out my first novel, midnight's simulacra!

FreeBSD APIs: Difference between revisions

From dankwiki
No edit summary
No edit summary
Line 3: Line 3:
==File descriptors==
==File descriptors==
* <tt>[[kqueue|kqueue(2)]]</tt>, introduced in FreeBSD 4.1, is FreeBSD's "better <tt>poll(2)</tt>", ala <tt>[[epoll|epoll(7)]]</tt> on [[Linux APIs|Linux]].
* <tt>[[kqueue|kqueue(2)]]</tt>, introduced in FreeBSD 4.1, is FreeBSD's "better <tt>poll(2)</tt>", ala <tt>[[epoll|epoll(7)]]</tt> on [[Linux APIs|Linux]].
* <tt>[https://man.freebsd.org/cgi/man.cgi?query=accept_filter accept_filter(9)]</tt>


== Socket Options ==
== Socket Options ==

Revision as of 00:11, 24 June 2023

I'm documenting FreeBSD's departures from known standards/APIUE/UNP as I come across them in various man pages and source code. The entirety of the FreeBSD man pages can be browsed at http://www.freebsd.org/cgi/man.cgi. This page serves as a companion to "Linux APIs" and "POSIX".

File descriptors

Socket Options

SOL_SOCKET

  • SO_ACCEPTFILTER (Introduced in FreeBSD 4.0): Apply an accept_filter(9) kernel module to the listen(2)ing socket. The connection will not be accept(2)able until the filter is satisfied. accf_data(9), satisfied by the receipt of any connection payload data, is roughly equivalent to Linux's TCP_DEFER_ACCEPT.

IPPROTO_TCP

  • TCP_NOPUSH: Normally, every write operation to a TCP socket will result in an attempt to set the TCP PSH bit and transmit the queued data. With TCP_NOPUSH set, packets will be coalesced until either the MSS is reached, or the socket is closed. Compare to Linux's TCP_CORK.
    • It is my experience that clearing this flag will result in the transmission of queued data, but I cannot find documentation supporting this. Tony Finch's kernel patch seems to have been applied to FreeBSD 4.5, providing this behavior.