<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-NZ" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">As I understand it, traditionally RT apps had to be kernel-mode because it simply wasn’t possible to write a userspace app with the latency guarantees that are required.  Hence also the use of RT
 co-kernels.  That has improved considerably in recent years, and it’s now easier to make a reliable userspace app – but for tight cycle times or if missed cycles can have safety consequences, it might still be better to use an RT co-kernel.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">You can’t have multiple userspace processes sharing networks, however.  Once an application “claims” a master interface for realtime use (to bring slaves to OP and exchange PDOs), no other processes
 can do so.  It is, however, still possible for other processes to queue SDO requests and a few other non-realtime things, but even this is preferably gatewayed through the app so that it knows what is going on.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>

<P 
style="FONT-SIZE: 100%; FONT-FAMILY: Calibri, Candara, Segoe, Optima, Arial, sans-serif; COLOR: rgb(89,89,89)"><STRONG>Gavin Lambert<BR></STRONG>Senior Software Developer<BR></P>
<P style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">
<TABLE>
  <TBODY 
  style="FONT-SIZE: 75%; FONT-FAMILY: Calibri, Candara, Segoe, Optima, Arial, sans-serif; COLOR: rgb(89,89,89)">  </TBODY></TABLE></P>
<P style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><IMG border=0 
src="cid:logo_compac_5dcf97ef-52f5-498c-8b9b-728410ddffaf.png"><BR><A 
href="http://www.compacsort.com"><IMG border=0 alt=TOMRA 
src="cid:compacicon_82e8a8c7-154a-4a32-9720-a5badb6258e0.png" width=33 
height=37></A> <A href="https://www.facebook.com/Compacsort"><IMG border=0 
alt=Facebook src="cid:facebook_fa85b924-53b9-45cc-8162-0564f64ec3a3.png" width=35 
height=37></A> <A 
href="https://www.linkedin.com/company/compac-sorting-equipment/"><IMG border=0 
alt=Linkedin src="cid:linkedin_4ec016ad-84fa-443c-85a3-b9615a4ccef8.png" width=35 
height=37></A> <A href="https://vimeo.com/compacsort"><IMG border=0 alt=Youtube 
src="cid:youtube_32142163-fc27-4aed-b14d-e8a377f98a6d.png" width=37 height=37></A> 
<A href="https://twitter.com/compacsort"><IMG border=0 alt=twitter 
src="cid:twitter_d89338d8-98c8-4b65-9a9e-7b1333160b0d.png" width=33 height=37></A> 
</P>
<P 
style="FONT-SIZE: 75%; FONT-FAMILY: Calibri, Candara, Segoe, Optima, Arial, sans-serif; COLOR: rgb(89,89,89)"><B>COMPAC 
SORTING EQUIPMENT LTD</B> | 4 Henderson Pl | Onehunga | Auckland 1061 | New 
Zealand<BR>Switchboard: +64 96 34 00 88 | <A 
href="http://www.tomra.com">tomra.com</A> </P>
<TABLE 
style="BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-COLLAPSE: collapse; BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none" 
cellSpacing=0 cellPadding=0 border=1>
  <TBODY>
  <TR>
    <TD 
    style="BORDER-LEFT-STYLE: none; BORDER-TOP: #595959 1pt solid; BORDER-BOTTOM: #595959 1pt solid; BORDER-RIGHT-STYLE: none" 
    vAlign=top>
      <P 
      style="FONT-SIZE: 75%; FONT-FAMILY: Calibri, Candara, Segoe, Optima, Arial, sans-serif; COLOR: rgb(89,89,89)">The 
      information contained in this communication and any attachment is 
      confidential and may be legally privileged. It should only be read by the 
      person(s) to whom it is addressed. If you have received this communication 
      in error, please notify the sender and delete the communication. 
  </P></TD></TR></TBODY></TABLE>
<P 
style="FONT-SIZE: 75%; FONT-FAMILY: Calibri, Candara, Segoe, Optima, Arial, sans-serif; COLOR: rgb(89,89,89)"></P><p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> William Zumwalt<br>
<b>Sent:</b> Saturday, 3 August 2019 03:57<br>
<b>To:</b> etherlab-users@etherlab.org<br>
<b>Subject:</b> [etherlab-users] application modules<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">The only reason I can think of for wanting to write an app as a KM is if data weren't going to userspace, but back down the network stack (using another protocol?). My process data needs to go into userspace and I'm also curious how an
 app written as a KM would send it's data to userspace?  <br>
<br>
According to the docs, the only difference I see is external memory for domains. In the case of not having a single app mod instance, could there be issues in multi-threading, having multiple user-space processes write to the same PDO?<br>
<br>
Can anyone think of any good reasons for writing the app as a KM?<br>
<br>
Will<o:p></o:p></p>
</div>
</div>
</body>
</html>