<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">I made a afunix version of the inet driver. You can find it here:<div><br></div><div><a href="https://github.com/tonyrog/afunix">https://github.com/tonyrog/afunix</a></div><div><br></div><div>It will register it self as a socket so that afunix/gen_tcp/inet api is available.</div><div><br></div><div>The reason I implemented it was the very same reason you had.</div><div><br></div><div>/Tony</div><div><br><div><br><div><div>On 23 aug 2014, at 03:01, Michael Truog <<a href="mailto:mjtruog@gmail.com">mjtruog@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">To be a little clearer, my prim_inet:ignorefd/2 usage is to use a file descriptor created in the inet source code after passing it through gen_tcp:fdopen/2. So, the sequence is:<br>...<br>{ok, FileDescriptorInternal} = prim_inet:getfd(Socket),<br>ok = prim_inet:ignorefd(Socket, true),<br>{ok, NewSocket} = gen_tcp:fdopen(FileDescriptorInternal, SocketOptions),<br>...<br>While this might seem odd, this allows me to dup2 the file descriptor without causing obvious problems and handle UNIX domain sockets, which are currently unsupported within inet (by avoiding the internal checking that prevents their use).<br><br>On 08/22/2014 05:46 PM, Michael Truog wrote:<br><blockquote type="cite">I have been seeing the erts_poll_wait() thread consume 100% CPU when my configuration makes prim_inet:ignorefd/2 ignore a fd (inet_descriptor has is_ignored set to true) created external to inet (10 file descriptors created this way).  I don't have this problem when using the inet code to create tcp sockets, when prim_inet:ignorefd/2 is not used with the same configuration. When setting "#define INET_DRV_DEBUG 1" in "./erts/emulator/drivers/common/inet_drv.c" and "#define ERTS_POLL_DEBUG_PRINT" in "./erts/emulator/sys/common/erl_poll.c" all the debugging output looks the same when exercising the file descriptors in the same way.  The only difference seems to be the "Entering erts_poll_wait(), timeout=NUMBER" output has non-zero timeout values more often when prim_inet:ignorefd/2 is not used when compare to the output when it is being used.  Also, the NUMBER doesn't seem to go about 1000 for me when prim_inet:ignorefd/2 is used, but it can go above 1000 when prim_inet:ignorefd/2 is not used.<br><br>Why would the erts_poll_wait() loop be refusing to timeout?  Is this expected behaviour?  Is there an erts configuration flag which is meant to address the problem?<br><br>Thanks,<br>Michael<br></blockquote><br>_______________________________________________<br>erlang-questions mailing list<br><a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>http://erlang.org/mailman/listinfo/erlang-questions<br></blockquote></div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px;"><div><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 12px; ">"Installing applications can lead to corruption over time. </span><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 12px; ">Applications gradually write over each other's libraries, partial upgrades occur, user and system errors happen, and minute changes may be unnoticeable and difficult to fix"</span></div><div><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 12px; "><br></span></div></span><br class="Apple-interchange-newline">
</div>
<br></div></div></body></html>