/**
* @brief Initializes BOSS.
* @param programID programID to use, 0 for the current process. Not used internally unless BOSSP is available.
+ * @param force_user When true, just use bossU instead of trying to initialize with bossP first.
*/
-Result bossInit(u64 programID);
+Result bossInit(u64 programID, bool force_user);
/// Exits BOSS.
void bossExit(void);
static Result bossipc_InitializeSession(u64 programID);
-Result bossInit(u64 programID)
+Result bossInit(u64 programID, bool force_user)
{
Result res=0;
Handle envhandle=0;
if (AtomicPostIncrement(&bossRefCount)) return 0;
- res = srvGetServiceHandle(&handle, "boss:P");
- envhandle = envGetHandle("boss:P");
- bossPriv = 1;
+ res = -1;
+
+ if(!force_user)
+ {
+ res = srvGetServiceHandle(&handle, "boss:P");
+ envhandle = envGetHandle("boss:P");
+ bossPriv = 1;
+ }
+
if (R_FAILED(res))
{
bossPriv = 0;