libnx/env_8h.html
2025-05-08 06:59:12 +00:00

462 lines
34 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libnx: include/switch/runtime/env.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">libnx<span id="projectnumber">&#160;v4.9.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_42bea3d40f1f1694e41a8f3166c98108.html">switch</a></li><li class="navelem"><a class="el" href="dir_afd0453aeaaca58db0f3a26ffe540381.html">runtime</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">env.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Homebrew environment definitions and utilities.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="types_8h_source.html">../types.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="acc_8h_source.html">../services/acc.h</a>&quot;</code><br />
</div>
<p><a href="env_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structConfigEntry.html">ConfigEntry</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure representing an entry in the homebrew environment configuration. <a href="structConfigEntry.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:acc32f4f9ecaefa07ad3f6626c4a214d3" id="r_acc32f4f9ecaefa07ad3f6626c4a214d3"><td class="memItemLeft" align="right" valign="top"><a id="acc32f4f9ecaefa07ad3f6626c4a214d3" name="acc32f4f9ecaefa07ad3f6626c4a214d3"></a>
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><b>LoaderReturnFn</b>) (int result_code)</td></tr>
<tr class="memdesc:acc32f4f9ecaefa07ad3f6626c4a214d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loader return function. <br /></td></tr>
<tr class="separator:acc32f4f9ecaefa07ad3f6626c4a214d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a0ed680fdb405e7195d9f14032851eebb" id="r_a0ed680fdb405e7195d9f14032851eebb"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <a class="el" href="env_8h.html#a0ed680fdb405e7195d9f14032851eebba37d2147c59409a606ff7fbbcd48ce310">EntryFlag_IsMandatory</a> = (1U&lt;&lt;( 0 ))
}</td></tr>
<tr class="memdesc:a0ed680fdb405e7195d9f14032851eebb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Entry flags. <a href="env_8h.html#a0ed680fdb405e7195d9f14032851eebb">More...</a><br /></td></tr>
<tr class="separator:a0ed680fdb405e7195d9f14032851eebb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0944a4353780132eeab7b06e3e42291d" id="r_a0944a4353780132eeab7b06e3e42291d"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <br />
&#160;&#160;<a class="el" href="env_8h.html#a0944a4353780132eeab7b06e3e42291da455c3ce807b1f796b4be45a55bacb024">EntryType_EndOfList</a> =0
, <br />
&#160;&#160;<a class="el" href="env_8h.html#a0944a4353780132eeab7b06e3e42291dac367f9dc1459e6549525d20baa5cbb88">EntryType_MainThreadHandle</a> =1
, <br />
&#160;&#160;<a class="el" href="env_8h.html#a0944a4353780132eeab7b06e3e42291da88d2e8b053cf1d2fca7a67a720351e7a">EntryType_NextLoadPath</a> =2
, <br />
&#160;&#160;<a class="el" href="env_8h.html#a0944a4353780132eeab7b06e3e42291da6a0fc45f86c310d0b6276be703b3d9ea">EntryType_OverrideHeap</a> =3
, <br />
&#160;&#160;<a class="el" href="env_8h.html#a0944a4353780132eeab7b06e3e42291da1b22fbfde71e991bf3e3e683deb861cf">EntryType_OverrideService</a> =4
, <br />
&#160;&#160;<a class="el" href="env_8h.html#a0944a4353780132eeab7b06e3e42291da0838ff00d609e6b23ba7bbccfb11758a">EntryType_Argv</a> =5
, <br />
&#160;&#160;<a class="el" href="env_8h.html#a0944a4353780132eeab7b06e3e42291daf89471b35570739f250ceef2217bc1d8">EntryType_SyscallAvailableHint</a> =6
, <br />
&#160;&#160;<a class="el" href="env_8h.html#a0944a4353780132eeab7b06e3e42291dac8c5774f2e3d8df0bdfd493ad6d24635">EntryType_AppletType</a> =7
, <br />
&#160;&#160;<a class="el" href="env_8h.html#a0944a4353780132eeab7b06e3e42291da54a8603408db6ec1beedb3f5b1fd8b16">EntryType_AppletWorkaround</a> =8
, <br />
&#160;&#160;<a class="el" href="env_8h.html#a0944a4353780132eeab7b06e3e42291dabbf1b5508678665c78169bd568ec6c20">EntryType_Reserved9</a> =9
, <br />
&#160;&#160;<a class="el" href="env_8h.html#a0944a4353780132eeab7b06e3e42291da2ef6486d7a6471616def690acfea0b0f">EntryType_ProcessHandle</a> =10
, <br />
&#160;&#160;<a class="el" href="env_8h.html#a0944a4353780132eeab7b06e3e42291daf19e57ac2a4295e17f2e8b645b34066c">EntryType_LastLoadResult</a> =11
, <br />
&#160;&#160;<a class="el" href="env_8h.html#a0944a4353780132eeab7b06e3e42291daf9ff7019c7c8d36bf16411c8922300da">EntryType_RandomSeed</a> =14
, <br />
&#160;&#160;<a class="el" href="env_8h.html#a0944a4353780132eeab7b06e3e42291da4940099de88c919bee29788ebf65968b">EntryType_UserIdStorage</a> =15
, <br />
&#160;&#160;<a class="el" href="env_8h.html#a0944a4353780132eeab7b06e3e42291da0b07e0d7703384325996bc163c506491">EntryType_HosVersion</a> =16
, <br />
&#160;&#160;<a class="el" href="env_8h.html#a0944a4353780132eeab7b06e3e42291da3423f3368e16eccd78795fe8ae62d1b8">EntryType_SyscallAvailableHint2</a> =17
<br />
}</td></tr>
<tr class="separator:a0944a4353780132eeab7b06e3e42291d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4790f45dcc812c1b00184a2edccdddf5" id="r_a4790f45dcc812c1b00184a2edccdddf5"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <a class="el" href="env_8h.html#a4790f45dcc812c1b00184a2edccdddf5aa793377327e3f74abd20af3ba03c4894">EnvAppletFlags_ApplicationOverride</a> = (1U&lt;&lt;( 0 ))
}</td></tr>
<tr class="separator:a4790f45dcc812c1b00184a2edccdddf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a124ac37e03e794f79c2e1d35c705e41d" id="r_a124ac37e03e794f79c2e1d35c705e41d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="env_8h.html#a124ac37e03e794f79c2e1d35c705e41d">envSetup</a> (void *ctx, <a class="el" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a> main_thread, <a class="el" href="env_8h.html#acc32f4f9ecaefa07ad3f6626c4a214d3">LoaderReturnFn</a> saved_lr)</td></tr>
<tr class="memdesc:a124ac37e03e794f79c2e1d35c705e41d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parses the homebrew loader environment block (internally called). <br /></td></tr>
<tr class="separator:a124ac37e03e794f79c2e1d35c705e41d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae062d62927dd5dd518b9e45ed0a6599f" id="r_ae062d62927dd5dd518b9e45ed0a6599f"><td class="memItemLeft" align="right" valign="top"><a id="ae062d62927dd5dd518b9e45ed0a6599f" name="ae062d62927dd5dd518b9e45ed0a6599f"></a>
const char *&#160;</td><td class="memItemRight" valign="bottom"><b>envGetLoaderInfo</b> (void)</td></tr>
<tr class="memdesc:ae062d62927dd5dd518b9e45ed0a6599f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns information text about the loader, if present. <br /></td></tr>
<tr class="separator:ae062d62927dd5dd518b9e45ed0a6599f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab54f5f5ecfdf85f56a53482994bdc34" id="r_aab54f5f5ecfdf85f56a53482994bdc34"><td class="memItemLeft" align="right" valign="top"><a id="aab54f5f5ecfdf85f56a53482994bdc34" name="aab54f5f5ecfdf85f56a53482994bdc34"></a>
<a class="el" href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a>&#160;</td><td class="memItemRight" valign="bottom"><b>envGetLoaderInfoSize</b> (void)</td></tr>
<tr class="memdesc:aab54f5f5ecfdf85f56a53482994bdc34"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the size of the loader information text. <br /></td></tr>
<tr class="separator:aab54f5f5ecfdf85f56a53482994bdc34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e26a0f9bf1212376fd62899a15c76f0" id="r_a1e26a0f9bf1212376fd62899a15c76f0"><td class="memItemLeft" align="right" valign="top"><a id="a1e26a0f9bf1212376fd62899a15c76f0" name="a1e26a0f9bf1212376fd62899a15c76f0"></a>
<a class="el" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a>&#160;</td><td class="memItemRight" valign="bottom"><b>envGetMainThreadHandle</b> (void)</td></tr>
<tr class="memdesc:a1e26a0f9bf1212376fd62899a15c76f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the handle to the main thread. <br /></td></tr>
<tr class="separator:a1e26a0f9bf1212376fd62899a15c76f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b54a3759dc7fca254c0402959b0c3a9" id="r_a1b54a3759dc7fca254c0402959b0c3a9"><td class="memItemLeft" align="right" valign="top"><a id="a1b54a3759dc7fca254c0402959b0c3a9" name="a1b54a3759dc7fca254c0402959b0c3a9"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>envIsNso</b> (void)</td></tr>
<tr class="memdesc:a1b54a3759dc7fca254c0402959b0c3a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the application is running as NSO, otherwise NRO. <br /></td></tr>
<tr class="separator:a1b54a3759dc7fca254c0402959b0c3a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51436dd6a71d9c7ec31a98b32e512a90" id="r_a51436dd6a71d9c7ec31a98b32e512a90"><td class="memItemLeft" align="right" valign="top"><a id="a51436dd6a71d9c7ec31a98b32e512a90" name="a51436dd6a71d9c7ec31a98b32e512a90"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>envHasHeapOverride</b> (void)</td></tr>
<tr class="memdesc:a51436dd6a71d9c7ec31a98b32e512a90"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the environment has a heap override. <br /></td></tr>
<tr class="separator:a51436dd6a71d9c7ec31a98b32e512a90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e22bb071c3f9ba88f03646dbc091f7b" id="r_a3e22bb071c3f9ba88f03646dbc091f7b"><td class="memItemLeft" align="right" valign="top"><a id="a3e22bb071c3f9ba88f03646dbc091f7b" name="a3e22bb071c3f9ba88f03646dbc091f7b"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><b>envGetHeapOverrideAddr</b> (void)</td></tr>
<tr class="memdesc:a3e22bb071c3f9ba88f03646dbc091f7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the address of the overriden heap. <br /></td></tr>
<tr class="separator:a3e22bb071c3f9ba88f03646dbc091f7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4586aa8a25da026e4556972ab58524f8" id="r_a4586aa8a25da026e4556972ab58524f8"><td class="memItemLeft" align="right" valign="top"><a id="a4586aa8a25da026e4556972ab58524f8" name="a4586aa8a25da026e4556972ab58524f8"></a>
<a class="el" href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a>&#160;</td><td class="memItemRight" valign="bottom"><b>envGetHeapOverrideSize</b> (void)</td></tr>
<tr class="memdesc:a4586aa8a25da026e4556972ab58524f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the size of the overriden heap. <br /></td></tr>
<tr class="separator:a4586aa8a25da026e4556972ab58524f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c8b1570deecff0e9c0bc8f46679bad7" id="r_a9c8b1570deecff0e9c0bc8f46679bad7"><td class="memItemLeft" align="right" valign="top"><a id="a9c8b1570deecff0e9c0bc8f46679bad7" name="a9c8b1570deecff0e9c0bc8f46679bad7"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>envHasArgv</b> (void)</td></tr>
<tr class="memdesc:a9c8b1570deecff0e9c0bc8f46679bad7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the environment has an argv array. <br /></td></tr>
<tr class="separator:a9c8b1570deecff0e9c0bc8f46679bad7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ac15917c422b7fb76defc28391de908" id="r_a3ac15917c422b7fb76defc28391de908"><td class="memItemLeft" align="right" valign="top"><a id="a3ac15917c422b7fb76defc28391de908" name="a3ac15917c422b7fb76defc28391de908"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><b>envGetArgv</b> (void)</td></tr>
<tr class="memdesc:a3ac15917c422b7fb76defc28391de908"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the pointer to the argv array. <br /></td></tr>
<tr class="separator:a3ac15917c422b7fb76defc28391de908"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9290f46daa561f0d6fcf13c66eafc9e3" id="r_a9290f46daa561f0d6fcf13c66eafc9e3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="env_8h.html#a9290f46daa561f0d6fcf13c66eafc9e3">envIsSyscallHinted</a> (unsigned svc)</td></tr>
<tr class="memdesc:a9290f46daa561f0d6fcf13c66eafc9e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether a syscall is hinted to be available. <br /></td></tr>
<tr class="separator:a9290f46daa561f0d6fcf13c66eafc9e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c95ad44bb4cedb30a9a1ab419e98ed1" id="r_a0c95ad44bb4cedb30a9a1ab419e98ed1"><td class="memItemLeft" align="right" valign="top"><a id="a0c95ad44bb4cedb30a9a1ab419e98ed1" name="a0c95ad44bb4cedb30a9a1ab419e98ed1"></a>
<a class="el" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a>&#160;</td><td class="memItemRight" valign="bottom"><b>envGetOwnProcessHandle</b> (void)</td></tr>
<tr class="memdesc:a0c95ad44bb4cedb30a9a1ab419e98ed1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the handle to the running homebrew process. <br /></td></tr>
<tr class="separator:a0c95ad44bb4cedb30a9a1ab419e98ed1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac65b11f2f6e633153b9b93dc7fca8333" id="r_ac65b11f2f6e633153b9b93dc7fca8333"><td class="memItemLeft" align="right" valign="top"><a id="ac65b11f2f6e633153b9b93dc7fca8333" name="ac65b11f2f6e633153b9b93dc7fca8333"></a>
<a class="el" href="env_8h.html#acc32f4f9ecaefa07ad3f6626c4a214d3">LoaderReturnFn</a>&#160;</td><td class="memItemRight" valign="bottom"><b>envGetExitFuncPtr</b> (void)</td></tr>
<tr class="memdesc:ac65b11f2f6e633153b9b93dc7fca8333"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the loader's return function, to be called on program exit. <br /></td></tr>
<tr class="separator:ac65b11f2f6e633153b9b93dc7fca8333"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2442d4eb26aeabc2aff6b19979848936" id="r_a2442d4eb26aeabc2aff6b19979848936"><td class="memItemLeft" align="right" valign="top"><a id="a2442d4eb26aeabc2aff6b19979848936" name="a2442d4eb26aeabc2aff6b19979848936"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>envSetExitFuncPtr</b> (<a class="el" href="env_8h.html#acc32f4f9ecaefa07ad3f6626c4a214d3">LoaderReturnFn</a> addr)</td></tr>
<tr class="memdesc:a2442d4eb26aeabc2aff6b19979848936"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the return function to be called on program exit. <br /></td></tr>
<tr class="separator:a2442d4eb26aeabc2aff6b19979848936"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3fa9a2b9c3296e182c7caf618dbb4e0" id="r_ab3fa9a2b9c3296e182c7caf618dbb4e0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="env_8h.html#ab3fa9a2b9c3296e182c7caf618dbb4e0">envSetNextLoad</a> (const char *path, const char *argv)</td></tr>
<tr class="memdesc:ab3fa9a2b9c3296e182c7caf618dbb4e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures the next homebrew application to load. <br /></td></tr>
<tr class="separator:ab3fa9a2b9c3296e182c7caf618dbb4e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9698d8f9425e1fff28518f9a4ff91fd" id="r_ad9698d8f9425e1fff28518f9a4ff91fd"><td class="memItemLeft" align="right" valign="top"><a id="ad9698d8f9425e1fff28518f9a4ff91fd" name="ad9698d8f9425e1fff28518f9a4ff91fd"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>envHasNextLoad</b> (void)</td></tr>
<tr class="memdesc:ad9698d8f9425e1fff28518f9a4ff91fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the environment supports envSetNextLoad. <br /></td></tr>
<tr class="separator:ad9698d8f9425e1fff28518f9a4ff91fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a329ac3596407963243429e4953c981ff" id="r_a329ac3596407963243429e4953c981ff"><td class="memItemLeft" align="right" valign="top"><a id="a329ac3596407963243429e4953c981ff" name="a329ac3596407963243429e4953c981ff"></a>
<a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a>&#160;</td><td class="memItemRight" valign="bottom"><b>envGetLastLoadResult</b> (void)</td></tr>
<tr class="memdesc:a329ac3596407963243429e4953c981ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the Result from the last NRO. <br /></td></tr>
<tr class="separator:a329ac3596407963243429e4953c981ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46b8d15b6d7d8e937c2066bbbae2df9f" id="r_a46b8d15b6d7d8e937c2066bbbae2df9f"><td class="memItemLeft" align="right" valign="top"><a id="a46b8d15b6d7d8e937c2066bbbae2df9f" name="a46b8d15b6d7d8e937c2066bbbae2df9f"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>envHasRandomSeed</b> (void)</td></tr>
<tr class="memdesc:a46b8d15b6d7d8e937c2066bbbae2df9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the environment provides a random seed. <br /></td></tr>
<tr class="separator:a46b8d15b6d7d8e937c2066bbbae2df9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeca9fba352d85d3805b158965691c97b" id="r_aeca9fba352d85d3805b158965691c97b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="env_8h.html#aeca9fba352d85d3805b158965691c97b">envGetRandomSeed</a> (<a class="el" href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> out[2])</td></tr>
<tr class="memdesc:aeca9fba352d85d3805b158965691c97b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the random seed provided by the environment. <br /></td></tr>
<tr class="separator:aeca9fba352d85d3805b158965691c97b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8fb0de0fe88666b8f7586d0456cbccc" id="r_ab8fb0de0fe88666b8f7586d0456cbccc"><td class="memItemLeft" align="right" valign="top"><a id="ab8fb0de0fe88666b8f7586d0456cbccc" name="ab8fb0de0fe88666b8f7586d0456cbccc"></a>
<a class="el" href="structAccountUid.html">AccountUid</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>envGetUserIdStorage</b> (void)</td></tr>
<tr class="memdesc:ab8fb0de0fe88666b8f7586d0456cbccc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a pointer to the user id storage area (if present). <br /></td></tr>
<tr class="separator:ab8fb0de0fe88666b8f7586d0456cbccc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Homebrew environment definitions and utilities. </p>
<dl class="section author"><dt>Author</dt><dd>plutoo </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>libnx Authors </dd></dl>
</div><h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="a0ed680fdb405e7195d9f14032851eebb" name="a0ed680fdb405e7195d9f14032851eebb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ed680fdb405e7195d9f14032851eebb">&#9670;&#160;</a></span>anonymous enum</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">anonymous enum</td>
</tr>
</table>
</div><div class="memdoc">
<p>Entry flags. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a0ed680fdb405e7195d9f14032851eebba37d2147c59409a606ff7fbbcd48ce310" name="a0ed680fdb405e7195d9f14032851eebba37d2147c59409a606ff7fbbcd48ce310"></a>EntryFlag_IsMandatory&#160;</td><td class="fielddoc"><p>Specifies that the entry <b>must</b> be processed by the homebrew application. </p>
</td></tr>
</table>
</div>
</div>
<a id="a0944a4353780132eeab7b06e3e42291d" name="a0944a4353780132eeab7b06e3e42291d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0944a4353780132eeab7b06e3e42291d">&#9670;&#160;</a></span>anonymous enum</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">anonymous enum</td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a0944a4353780132eeab7b06e3e42291da455c3ce807b1f796b4be45a55bacb024" name="a0944a4353780132eeab7b06e3e42291da455c3ce807b1f796b4be45a55bacb024"></a>EntryType_EndOfList&#160;</td><td class="fielddoc"><p>Entry list terminator. </p>
</td></tr>
<tr><td class="fieldname"><a id="a0944a4353780132eeab7b06e3e42291dac367f9dc1459e6549525d20baa5cbb88" name="a0944a4353780132eeab7b06e3e42291dac367f9dc1459e6549525d20baa5cbb88"></a>EntryType_MainThreadHandle&#160;</td><td class="fielddoc"><p>Provides the handle to the main thread. </p>
</td></tr>
<tr><td class="fieldname"><a id="a0944a4353780132eeab7b06e3e42291da88d2e8b053cf1d2fca7a67a720351e7a" name="a0944a4353780132eeab7b06e3e42291da88d2e8b053cf1d2fca7a67a720351e7a"></a>EntryType_NextLoadPath&#160;</td><td class="fielddoc"><p>Provides a buffer containing information about the next homebrew application to load. </p>
</td></tr>
<tr><td class="fieldname"><a id="a0944a4353780132eeab7b06e3e42291da6a0fc45f86c310d0b6276be703b3d9ea" name="a0944a4353780132eeab7b06e3e42291da6a0fc45f86c310d0b6276be703b3d9ea"></a>EntryType_OverrideHeap&#160;</td><td class="fielddoc"><p>Provides heap override information. </p>
</td></tr>
<tr><td class="fieldname"><a id="a0944a4353780132eeab7b06e3e42291da1b22fbfde71e991bf3e3e683deb861cf" name="a0944a4353780132eeab7b06e3e42291da1b22fbfde71e991bf3e3e683deb861cf"></a>EntryType_OverrideService&#160;</td><td class="fielddoc"><p>Provides service override information. </p>
</td></tr>
<tr><td class="fieldname"><a id="a0944a4353780132eeab7b06e3e42291da0838ff00d609e6b23ba7bbccfb11758a" name="a0944a4353780132eeab7b06e3e42291da0838ff00d609e6b23ba7bbccfb11758a"></a>EntryType_Argv&#160;</td><td class="fielddoc"><p>Provides argv. </p>
</td></tr>
<tr><td class="fieldname"><a id="a0944a4353780132eeab7b06e3e42291daf89471b35570739f250ceef2217bc1d8" name="a0944a4353780132eeab7b06e3e42291daf89471b35570739f250ceef2217bc1d8"></a>EntryType_SyscallAvailableHint&#160;</td><td class="fielddoc"><p>Provides syscall availability hints (SVCs 0x00..0x7F). </p>
</td></tr>
<tr><td class="fieldname"><a id="a0944a4353780132eeab7b06e3e42291dac8c5774f2e3d8df0bdfd493ad6d24635" name="a0944a4353780132eeab7b06e3e42291dac8c5774f2e3d8df0bdfd493ad6d24635"></a>EntryType_AppletType&#160;</td><td class="fielddoc"><p>Provides APT applet type. </p>
</td></tr>
<tr><td class="fieldname"><a id="a0944a4353780132eeab7b06e3e42291da54a8603408db6ec1beedb3f5b1fd8b16" name="a0944a4353780132eeab7b06e3e42291da54a8603408db6ec1beedb3f5b1fd8b16"></a>EntryType_AppletWorkaround&#160;</td><td class="fielddoc"><p>Indicates that APT is broken and should not be used. </p>
</td></tr>
<tr><td class="fieldname"><a id="a0944a4353780132eeab7b06e3e42291dabbf1b5508678665c78169bd568ec6c20" name="a0944a4353780132eeab7b06e3e42291dabbf1b5508678665c78169bd568ec6c20"></a>EntryType_Reserved9&#160;</td><td class="fielddoc"><p>Unused/reserved entry type, formerly used by StdioSockets. </p>
</td></tr>
<tr><td class="fieldname"><a id="a0944a4353780132eeab7b06e3e42291da2ef6486d7a6471616def690acfea0b0f" name="a0944a4353780132eeab7b06e3e42291da2ef6486d7a6471616def690acfea0b0f"></a>EntryType_ProcessHandle&#160;</td><td class="fielddoc"><p>Provides the process handle. </p>
</td></tr>
<tr><td class="fieldname"><a id="a0944a4353780132eeab7b06e3e42291daf19e57ac2a4295e17f2e8b645b34066c" name="a0944a4353780132eeab7b06e3e42291daf19e57ac2a4295e17f2e8b645b34066c"></a>EntryType_LastLoadResult&#160;</td><td class="fielddoc"><p>Provides the last load result. </p>
</td></tr>
<tr><td class="fieldname"><a id="a0944a4353780132eeab7b06e3e42291daf9ff7019c7c8d36bf16411c8922300da" name="a0944a4353780132eeab7b06e3e42291daf9ff7019c7c8d36bf16411c8922300da"></a>EntryType_RandomSeed&#160;</td><td class="fielddoc"><p>Provides random data used to seed the pseudo-random number generator. </p>
</td></tr>
<tr><td class="fieldname"><a id="a0944a4353780132eeab7b06e3e42291da4940099de88c919bee29788ebf65968b" name="a0944a4353780132eeab7b06e3e42291da4940099de88c919bee29788ebf65968b"></a>EntryType_UserIdStorage&#160;</td><td class="fielddoc"><p>Provides persistent storage for the preselected user id. </p>
</td></tr>
<tr><td class="fieldname"><a id="a0944a4353780132eeab7b06e3e42291da0b07e0d7703384325996bc163c506491" name="a0944a4353780132eeab7b06e3e42291da0b07e0d7703384325996bc163c506491"></a>EntryType_HosVersion&#160;</td><td class="fielddoc"><p>Provides the currently running Horizon OS version. </p>
</td></tr>
<tr><td class="fieldname"><a id="a0944a4353780132eeab7b06e3e42291da3423f3368e16eccd78795fe8ae62d1b8" name="a0944a4353780132eeab7b06e3e42291da3423f3368e16eccd78795fe8ae62d1b8"></a>EntryType_SyscallAvailableHint2&#160;</td><td class="fielddoc"><p>Provides syscall availability hints (SVCs 0x80..0xBF). </p>
</td></tr>
</table>
</div>
</div>
<a id="a4790f45dcc812c1b00184a2edccdddf5" name="a4790f45dcc812c1b00184a2edccdddf5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4790f45dcc812c1b00184a2edccdddf5">&#9670;&#160;</a></span>anonymous enum</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">anonymous enum</td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a4790f45dcc812c1b00184a2edccdddf5aa793377327e3f74abd20af3ba03c4894" name="a4790f45dcc812c1b00184a2edccdddf5aa793377327e3f74abd20af3ba03c4894"></a>EnvAppletFlags_ApplicationOverride&#160;</td><td class="fielddoc"><p>Use AppletType_Application instead of AppletType_SystemApplication. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="aeca9fba352d85d3805b158965691c97b" name="aeca9fba352d85d3805b158965691c97b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeca9fba352d85d3805b158965691c97b">&#9670;&#160;</a></span>envGetRandomSeed()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void envGetRandomSeed </td>
<td>(</td>
<td class="paramtype"><a class="el" href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a>&#160;</td>
<td class="paramname"><em>out</em>[2]</td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieves the random seed provided by the environment. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">out</td><td>Pointer to a u64[2] buffer which will contain the random seed on return. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a9290f46daa561f0d6fcf13c66eafc9e3" name="a9290f46daa561f0d6fcf13c66eafc9e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9290f46daa561f0d6fcf13c66eafc9e3">&#9670;&#160;</a></span>envIsSyscallHinted()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool envIsSyscallHinted </td>
<td>(</td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>svc</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns whether a syscall is hinted to be available. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">svc</td><td>Syscall number to test. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the syscall is available. </dd></dl>
</div>
</div>
<a id="ab3fa9a2b9c3296e182c7caf618dbb4e0" name="ab3fa9a2b9c3296e182c7caf618dbb4e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab3fa9a2b9c3296e182c7caf618dbb4e0">&#9670;&#160;</a></span>envSetNextLoad()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="types_8h.html#ad1be2721625a17f1be47fac918032afe">Result</a> envSetNextLoad </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>path</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Configures the next homebrew application to load. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">path</td><td>Path to the next homebrew application to load (.nro). </td></tr>
<tr><td class="paramname">argv</td><td>Argument string to pass. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a124ac37e03e794f79c2e1d35c705e41d" name="a124ac37e03e794f79c2e1d35c705e41d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a124ac37e03e794f79c2e1d35c705e41d">&#9670;&#160;</a></span>envSetup()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void envSetup </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a>&#160;</td>
<td class="paramname"><em>main_thread</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="env_8h.html#acc32f4f9ecaefa07ad3f6626c4a214d3">LoaderReturnFn</a>&#160;</td>
<td class="paramname"><em>saved_lr</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Parses the homebrew loader environment block (internally called). </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ctx</td><td>Reserved. </td></tr>
<tr><td class="paramname">main_thread</td><td>Reserved. </td></tr>
<tr><td class="paramname">saved_lr</td><td>Reserved. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>