191df013fSAsim Jamshed<!-- Creator : groff version 1.22.2 --> 2*e5df9dc1SAsim Jamshed<!-- CreationDate: Wed Feb 1 22:24:31 2017 --> 391df013fSAsim Jamshed<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 491df013fSAsim Jamshed"http://www.w3.org/TR/html4/loose.dtd"> 591df013fSAsim Jamshed<html> 691df013fSAsim Jamshed<head> 791df013fSAsim Jamshed<meta name="generator" content="groff -Thtml, see www.gnu.org"> 891df013fSAsim Jamshed<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> 991df013fSAsim Jamshed<meta name="Content-Style" content="text/css"> 1091df013fSAsim Jamshed<style type="text/css"> 1191df013fSAsim Jamshed p { margin-top: 0; margin-bottom: 0; vertical-align: top } 1291df013fSAsim Jamshed pre { margin-top: 0; margin-bottom: 0; vertical-align: top } 1391df013fSAsim Jamshed table { margin-top: 0; margin-bottom: 0; vertical-align: top } 1491df013fSAsim Jamshed h1 { text-align: center } 1591df013fSAsim Jamshed</style> 1691df013fSAsim Jamshed<title>mtcp_accept</title> 17*e5df9dc1SAsim Jamshed<link rel="stylesheet" href="./common.css"> 1891df013fSAsim Jamshed</head> 1991df013fSAsim Jamshed<body> 20*e5df9dc1SAsim Jamshed<div class="main"> 2191df013fSAsim Jamshed<h1 align="center">mtcp_accept</h1> 22*e5df9dc1SAsim Jamshed<!-- 2391df013fSAsim Jamshed<a href="#NAME">NAME</a><br> 2491df013fSAsim Jamshed<a href="#SYNOPSIS">SYNOPSIS</a><br> 2591df013fSAsim Jamshed<a href="#DESCRIPTION">DESCRIPTION</a><br> 2691df013fSAsim Jamshed<a href="#RETURN VALUE">RETURN VALUE</a><br> 2791df013fSAsim Jamshed<a href="#ERRORS">ERRORS</a><br> 2891df013fSAsim Jamshed<a href="#NOTES">NOTES</a><br> 2991df013fSAsim Jamshed<a href="#AUTHORS">AUTHORS</a><br> 3091df013fSAsim Jamshed<a href="#SEE ALSO">SEE ALSO</a><br> 3191df013fSAsim Jamshed<a href="#COLOPHON">COLOPHON</a><br> 3291df013fSAsim Jamshed<hr> 33*e5df9dc1SAsim Jamshed--> 3491df013fSAsim Jamshed 3591df013fSAsim Jamshed<h2>NAME 3691df013fSAsim Jamshed<a name="NAME"></a> 3791df013fSAsim Jamshed</h2> 3891df013fSAsim Jamshed 3991df013fSAsim Jamshed 4091df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">mtcp_accept 4191df013fSAsim Jamshed− accept a connection on an mTCP socket</p> 4291df013fSAsim Jamshed 4391df013fSAsim Jamshed<h2>SYNOPSIS 4491df013fSAsim Jamshed<a name="SYNOPSIS"></a> 4591df013fSAsim Jamshed</h2> 4691df013fSAsim Jamshed 4791df013fSAsim Jamshed 4891df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>#include 4991df013fSAsim Jamshed<mtcp_api.h></b></p> 5091df013fSAsim Jamshed 5191df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>int 5291df013fSAsim Jamshedmtcp_accept(mctx_t</b> <i>mctx</i><b>, int</b> 5391df013fSAsim Jamshed<i>sockid</i><b>, struct sockaddr *</b><i>addr</i><b>, 5491df013fSAsim Jamshedsocklen_t *</b><i>addrlen</i><b>);</b></p> 5591df013fSAsim Jamshed 5691df013fSAsim Jamshed<h2>DESCRIPTION 5791df013fSAsim Jamshed<a name="DESCRIPTION"></a> 5891df013fSAsim Jamshed</h2> 5991df013fSAsim Jamshed 6091df013fSAsim Jamshed 6191df013fSAsim Jamshed 6291df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>mtcp_accept</b>() 6391df013fSAsim Jamshedfunction is used to accept an incoming connection request 6491df013fSAsim Jamshedfrom a TCP client. During a successful <b>mtcp_accept()</b> 6591df013fSAsim Jamshedcall, the mTCP stack extracts the first connection request 6691df013fSAsim Jamshedfrom the listening queue of pending connections associated 6791df013fSAsim Jamshedwith the passive socket ID <i>sockid.</i> It then creates a 6891df013fSAsim Jamshednew socket and returns its corresponding socket ID to the 6991df013fSAsim Jamsheduser. The newly created socket (that is returned) can be 7091df013fSAsim Jamshedused to communicate with the TCP client while the original 7191df013fSAsim Jamshedsocket <i>sockid</i> is unaffected by this call. The passive 7291df013fSAsim Jamshedsocket represented by the <i>sockid</i> socket descriptor 7391df013fSAsim Jamshedshould be bound to a local address using <b>mtcp_bind()</b> 7491df013fSAsim Jamshedfunction and should be listening for connections by calling 7591df013fSAsim Jamshed<b>mtcp_listen()</b> function before it can be used for 7691df013fSAsim Jamshedaccepting new connection requests.</p> 7791df013fSAsim Jamshed 7891df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">The <i>addr</i> 7991df013fSAsim Jamshedargument is a pointer to <i>sockaddr</i> structure that gets 8091df013fSAsim Jamshedfilled up with the address of the peer node while the 8191df013fSAsim Jamshed<i>addrlen</i> field contains the size of the peer address. 8291df013fSAsim JamshedIf the <i>addr</i> argument is NULL, nothing is filled in 8391df013fSAsim Jamshedand as a result, <i>addrlen</i> is not used and should also 8491df013fSAsim Jamshedbe NULL.</p> 8591df013fSAsim Jamshed 8691df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">If no pending 8791df013fSAsim Jamshedconnections are present on the queue, mtcp_accept() fails 8891df013fSAsim Jamshedwith error <b>EAGAIN</b> errno.</p> 8991df013fSAsim Jamshed 9091df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">In order to be 9191df013fSAsim Jamshednotified of incoming connections on a socket, the user can 9291df013fSAsim Jamsheduse <b>mtcp_epoll_wait()</b> function call. A readable event 9391df013fSAsim Jamshedis delivered when a new connection arrives on the listening 9491df013fSAsim Jamshedsocket.</p> 9591df013fSAsim Jamshed 9691df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">An 9791df013fSAsim Jamshed<b>mtcp_accept</b>() call takes an additional argument named 9891df013fSAsim Jamshed<i>mctx</i> that represents the per-core mTCP context in an 9991df013fSAsim Jamshedapplication (see <b>mtcp_create_context()</b> for 10091df013fSAsim Jamsheddetails).</p> 10191df013fSAsim Jamshed 10291df013fSAsim Jamshed<h2>RETURN VALUE 10391df013fSAsim Jamshed<a name="RETURN VALUE"></a> 10491df013fSAsim Jamshed</h2> 10591df013fSAsim Jamshed 10691df013fSAsim Jamshed 10791df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">Returns an mTCP 10891df013fSAsim Jamsheddescriptor ID of the newly created active mTCP socket; -1 on 10991df013fSAsim Jamshedfailure. In case of failure, <i>errno</i> is set 11091df013fSAsim Jamshedappropriately.</p> 11191df013fSAsim Jamshed 11291df013fSAsim Jamshed<h2>ERRORS 11391df013fSAsim Jamshed<a name="ERRORS"></a> 11491df013fSAsim Jamshed</h2> 11591df013fSAsim Jamshed 11691df013fSAsim Jamshed 11791df013fSAsim Jamshed<table width="100%" border="0" rules="none" frame="void" 11891df013fSAsim Jamshed cellspacing="0" cellpadding="0"> 11991df013fSAsim Jamshed<tr valign="top" align="left"> 12091df013fSAsim Jamshed<td width="11%"></td> 12191df013fSAsim Jamshed<td width="9%"> 12291df013fSAsim Jamshed 12391df013fSAsim Jamshed 12491df013fSAsim Jamshed<p style="margin-top: 1em"><b>EAGAIN</b></p></td> 12591df013fSAsim Jamshed<td width="6%"></td> 12691df013fSAsim Jamshed<td width="74%"> 12791df013fSAsim Jamshed 12891df013fSAsim Jamshed 12991df013fSAsim Jamshed<p style="margin-top: 1em">No connections requests are 13091df013fSAsim Jamshedavailable at the moment.</p></td></tr> 13191df013fSAsim Jamshed<tr valign="top" align="left"> 13291df013fSAsim Jamshed<td width="11%"></td> 13391df013fSAsim Jamshed<td width="9%"> 13491df013fSAsim Jamshed 13591df013fSAsim Jamshed 13691df013fSAsim Jamshed<p><b>EBADF</b></p></td> 13791df013fSAsim Jamshed<td width="6%"></td> 13891df013fSAsim Jamshed<td width="74%"> 13991df013fSAsim Jamshed 14091df013fSAsim Jamshed 14191df013fSAsim Jamshed<p><i>sockid</i> is not a valid socket descriptor for 14291df013fSAsim Jamshedaccepting connections.</p></td></tr> 14391df013fSAsim Jamshed<tr valign="top" align="left"> 14491df013fSAsim Jamshed<td width="11%"></td> 14591df013fSAsim Jamshed<td width="9%"> 14691df013fSAsim Jamshed 14791df013fSAsim Jamshed 14891df013fSAsim Jamshed<p><b>EINTR</b></p></td> 14991df013fSAsim Jamshed<td width="6%"></td> 15091df013fSAsim Jamshed<td width="74%"> 15191df013fSAsim Jamshed 15291df013fSAsim Jamshed 15391df013fSAsim Jamshed<p>The application thread is scheduled to shut down.</p></td></tr> 15491df013fSAsim Jamshed<tr valign="top" align="left"> 15591df013fSAsim Jamshed<td width="11%"></td> 15691df013fSAsim Jamshed<td width="9%"> 15791df013fSAsim Jamshed 15891df013fSAsim Jamshed 15991df013fSAsim Jamshed<p><b>EINVAL</b></p></td> 16091df013fSAsim Jamshed<td width="6%"></td> 16191df013fSAsim Jamshed<td width="74%"> 16291df013fSAsim Jamshed 16391df013fSAsim Jamshed 16491df013fSAsim Jamshed<p>The socket referred to by the <i>sockid</i> argument is 16591df013fSAsim Jamshednot a listening (passive) socket.</p></td></tr> 16691df013fSAsim Jamshed<tr valign="top" align="left"> 16791df013fSAsim Jamshed<td width="11%"></td> 16891df013fSAsim Jamshed<td width="9%"> 16991df013fSAsim Jamshed 17091df013fSAsim Jamshed 17191df013fSAsim Jamshed<p><b>ENFILE</b></p></td> 17291df013fSAsim Jamshed<td width="6%"></td> 17391df013fSAsim Jamshed<td width="74%"> 17491df013fSAsim Jamshed 17591df013fSAsim Jamshed 17691df013fSAsim Jamshed<p>New active socket could not be created as the mTCP core 17791df013fSAsim Jamshedis out of socket descriptors at the moment.</p></td></tr> 17891df013fSAsim Jamshed</table> 17991df013fSAsim Jamshed 18091df013fSAsim Jamshed<h2>NOTES 18191df013fSAsim Jamshed<a name="NOTES"></a> 18291df013fSAsim Jamshed</h2> 18391df013fSAsim Jamshed 18491df013fSAsim Jamshed 18591df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">For performance 18691df013fSAsim Jamshedreasons, it is recommended that the <i>same</i> thread 18791df013fSAsim Jamshed(represented by <i>mctx</i> argument) that spawns the active 18891df013fSAsim Jamshedsocket via <b>mtcp_accept()</b> should handle operations 18991df013fSAsim Jamshed<b>(mtcp_read(), mtcp_write(),</b> and 19091df013fSAsim Jamshed<b>mtcp_getsockopt())</b> on that socket for the entire 19191df013fSAsim Jamshedlifetime of the connection (till <b>mtcp_close()).</b></p> 19291df013fSAsim Jamshed 19391df013fSAsim Jamshed<h2>AUTHORS 19491df013fSAsim Jamshed<a name="AUTHORS"></a> 19591df013fSAsim Jamshed</h2> 19691df013fSAsim Jamshed 19791df013fSAsim Jamshed 198*e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">mOS 199*e5df9dc1SAsim Jamsheddevelopment team <[email protected]></p> 20091df013fSAsim Jamshed 20191df013fSAsim Jamshed<h2>SEE ALSO 20291df013fSAsim Jamshed<a name="SEE ALSO"></a> 20391df013fSAsim Jamshed</h2> 20491df013fSAsim Jamshed 20591df013fSAsim Jamshed 20691df013fSAsim Jamshed 20791df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>mtcp_bind</b>(), 20891df013fSAsim Jamshed<b>mtcp_listen</b>(), <b>mtcp_socket</b>(), 20991df013fSAsim Jamshed<b>mtcp_connect</b>(), <b>mtcp_read</b>(), 21091df013fSAsim Jamshed<b>mtcp_write</b>()</p> 21191df013fSAsim Jamshed 21291df013fSAsim Jamshed<h2>COLOPHON 21391df013fSAsim Jamshed<a name="COLOPHON"></a> 21491df013fSAsim Jamshed</h2> 21591df013fSAsim Jamshed 21691df013fSAsim Jamshed 21791df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">This page is 21891df013fSAsim Jamshedpart of mOS release 0.3 <i>docs</i> section. A description 21991df013fSAsim Jamshedof the project, and information about reporting bugs, can be 22091df013fSAsim Jamshedfound at http://mos.kaist.edu/.</p> 221*e5df9dc1SAsim Jamshed<!-- <hr> --> 222*e5df9dc1SAsim Jamshed<br> 223*e5df9dc1SAsim Jamshed<div class="footer"> 224*e5df9dc1SAsim Jamshed <img src="back-arrow.jpg" width="2%" height="2%"><a href="http://mos.kaist.edu/index_man.html">Back to Index</a> 225*e5df9dc1SAsim Jamshed</div> 226*e5df9dc1SAsim Jamshed</div> 22791df013fSAsim Jamshed</body> 22891df013fSAsim Jamshed</html> 229