Gregory,&nbsp;thank&nbsp;you!<br/><br/>I&nbsp;am&nbsp;still&nbsp;trying&nbsp;to&nbsp;understand&nbsp;existing&nbsp;userland&nbsp;address&nbsp;envrionment&nbsp;in&nbsp;NuttX&nbsp;kernel&nbsp;mode,&nbsp;I&nbsp;saw&nbsp;the&nbsp;following&nbsp;regions&nbsp;defined&nbsp;in&nbsp;&quot;arch/Kconfig&quot;:&amp;nbsp;&nbsp;<br/><br/>config&nbsp;ARCH_TEXT_VBASE<br/>config&nbsp;ARCH_DATA_VBASE<br/>config&nbsp;ARCH_HEAP_VBASE<br/>config&nbsp;ARCH_SHM_VBASE<br/>config&nbsp;ARCH_KMAP_VBASE<br/>config&nbsp;ARCH_STACK_VBASE<br/>config&nbsp;ARCH_PGPOOL_VBASE<br/><br/>I&nbsp;can&nbsp;understand&nbsp;most&nbsp;of&nbsp;above,&nbsp;except&nbsp;the&nbsp;&quot;ARCH_KMAP_VBASE&quot;&nbsp;thing.&nbsp;But&nbsp;it&nbsp;doesn&#39;t&nbsp;look&nbsp;like&nbsp;relating&nbsp;to&nbsp;UIO&nbsp;though.&nbsp;<br/><br/>Regards,<br/>yf<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>Original<br/><br/>From:&quot;Gregory&nbsp;Nutt&quot;&amp;lt;&nbsp;spudan...@gmail.com&nbsp;&amp;gt;;<br/>Date:2024/3/29&nbsp;10:37<br/>To:&quot;dev&quot;&amp;lt;&nbsp;dev@nuttx.apache.org&nbsp;&amp;gt;;<br/>Subject:Re:&nbsp;userspace&nbsp;IO&nbsp;support<br/><br/><br/>On&nbsp;3/28/2024&nbsp;8:23&nbsp;PM,&nbsp;Gregory&nbsp;Nutt&nbsp;wrote:<br/>&amp;gt;&nbsp;...<br/>&amp;gt;<br/>&amp;gt;&nbsp;On&nbsp;all&nbsp;platforms&nbsp;that&nbsp;I&nbsp;am&nbsp;aware&nbsp;of,&nbsp;the&nbsp;virtual&nbsp;address&nbsp;of&nbsp;the&nbsp;<br/>&amp;gt;&nbsp;framebuffer&nbsp;is&nbsp;just&nbsp;a&nbsp;configurable&nbsp;constant.&amp;nbsp;&nbsp;This&nbsp;makes&nbsp;sense&nbsp;if&nbsp;the&nbsp;<br/>&amp;gt;&nbsp;framebuffer&nbsp;is&nbsp;in&nbsp;a&nbsp;fixed&nbsp;virtual&nbsp;address&nbsp;in&nbsp;every&nbsp;process.&nbsp;The&nbsp;kernel&nbsp;<br/>&amp;gt;&nbsp;can&nbsp;manage&nbsp;the&nbsp;virtual&nbsp;address&nbsp;space&nbsp;anyway&nbsp;that&nbsp;it&nbsp;likes.&amp;nbsp;&nbsp;A&nbsp;fixed&nbsp;<br/>&amp;gt;&nbsp;virtual&nbsp;position&nbsp;for&nbsp;the&nbsp;framebuffer&nbsp;is&nbsp;a&nbsp;reasonable&nbsp;decision.&amp;nbsp;&amp;nbsp;&nbsp;More&nbsp;<br/>&amp;gt;&nbsp;logic&nbsp;is&nbsp;need&nbsp;to&nbsp;manage&nbsp;the&nbsp;virtual&nbsp;address&nbsp;space&nbsp;to&nbsp;handle&nbsp;things&nbsp;<br/>&amp;gt;&nbsp;like&nbsp;pthread&nbsp;stacks,&nbsp;heap,&nbsp;shared&nbsp;libraries,&nbsp;framebuffers,&nbsp;etc.&amp;nbsp;&nbsp;The&nbsp;<br/>&amp;gt;&nbsp;logic&nbsp;and&nbsp;virtual&nbsp;memory&nbsp;layout&nbsp;in&nbsp;Linux&nbsp;is&nbsp;quite&nbsp;complex&nbsp;even&nbsp;though&nbsp;<br/>&amp;gt;&nbsp;all&nbsp;of&nbsp;these&nbsp;are&nbsp;at&nbsp;fixed&nbsp;virtual&nbsp;addresses&nbsp;in&nbsp;every&nbsp;process.<br/><br/>pthread&nbsp;stacks&nbsp;have&nbsp;some&nbsp;particular&nbsp;complexities.&amp;nbsp;&nbsp;First,&nbsp;their&nbsp;virtual&nbsp;<br/>address&nbsp;be&nbsp;aligned&nbsp;to&nbsp;a&nbsp;large&nbsp;value.&amp;nbsp;&nbsp;Old&nbsp;versions&nbsp;of&nbsp;Linux&nbsp;that&nbsp;I&nbsp;<br/>worked&nbsp;with&nbsp;in&nbsp;the&nbsp;past&nbsp;aligned&nbsp;the&nbsp;pthread&nbsp;virtual&nbsp;addresses&nbsp;to&nbsp;2&nbsp;<br/>MByte.&amp;nbsp;&nbsp;This&nbsp;permits&nbsp;TLS&nbsp;to&nbsp;work&nbsp;by&nbsp;simply&nbsp;ANDing&nbsp;an&nbsp;address&nbsp;(vs&nbsp;<br/>performing&nbsp;a&nbsp;system&nbsp;call).<br/><br/>Right&nbsp;now,&nbsp;pthread&nbsp;stacks&nbsp;are&nbsp;malloc&#39;ed&nbsp;and,&nbsp;as&nbsp;a&nbsp;result,&nbsp;cannot&nbsp;exploit&nbsp;<br/>this&nbsp;fast&nbsp;TLS&nbsp;access.<br/><br/>Old&nbsp;versions&nbsp;of&nbsp;Linux&nbsp;supported&nbsp;an&nbsp;array&nbsp;of&nbsp;pthread&nbsp;stacks&nbsp;(hence,&nbsp;<br/>limiting&nbsp;the&nbsp;number&nbsp;of&nbsp;pthreads&nbsp;to&nbsp;something&nbsp;like&nbsp;200).&nbsp;Each&nbsp;stack&nbsp;was&nbsp;<br/>2MByte&nbsp;of&nbsp;virtual&nbsp;address.&amp;nbsp;&nbsp;All&nbsp;fixed,&nbsp;constant&nbsp;virtual&nbsp;addresses.<br/><br/>

Reply via email to