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&minus; 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&lt;mtcp_api.h&gt;</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 &lt;[email protected]&gt;</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