From nobody Tue Apr 16 20:13:24 2024 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4VJwGD4k49z5H0hr; Tue, 16 Apr 2024 20:13:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4VJwGD3D12z4vHc; Tue, 16 Apr 2024 20:13:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1713298404; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kpJ+4Xz675Hd4QKCsmBYu6gveMlXxPy7coqGuqNxOEw=; b=p5J2WAJ6m0DWpzRAlMxudXzmEHXgghVFpLvFDEihFZjO656Yt8Le0Jn+mRtXVI5BoGVnm3 x9/6Ka93tDdd1qJVgYqjq4GKSHgKI0JOo2LIyRJ33hypA3qIfhL1xgiM0couHlA5akBVAy QTt/uPLMw3MlJXkPqVYcfvoyqXYkXHLhNmZetuOjdapPdv+LhTGiWwlM4IxhOMiWVMspZJ ZXxnUubXDj9Smepvi7tDk3c4zc04odkF0kmKM+aFra/W9ytHQ73T0s67gVV+MPyY8tX07J Xs5HF1GPBMMv9ezPr9Zp9lMtERzV/NiJJ4NSa/GzRbPBAJ2XeVCkJEXfV6DpRQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1713298404; a=rsa-sha256; cv=none; b=oSTFpckMxF9t1t/5rl2+3E6G4nyLccEHS57CWr+4/vOcgSdcZfF7UPT7Oac/V+xPRe31dO XaJevdyGSAfJxDPYhtu4OGh8GYoAmA/G9Ejb00hUh6r+hczf23iPoanlJUYh3FeNdiENHc 7mfjn6AMXuymTllaLQSqiQvRTfV5VO3o8t5cS4ifbv5oHTR7wRYw0bNeq3pvtRr5URg/FV z+5C/pklGiGX8seBSTQuU5CxE/sB+yETUB/JwQpuUCX+CFS4yk+UuWKVli0dvr/a5P9IY/ JKrbIIE5QbxsJXvI/qRmmCYfZ4r9FspW1L+3h197jZBQEb6gISh4LZfiFnLb3A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1713298404; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kpJ+4Xz675Hd4QKCsmBYu6gveMlXxPy7coqGuqNxOEw=; b=VHaQUbAFV+ytXyy1ggAYkXWw5zFspvtq2/ihLMVIa8i/NQOQt1elumM4ZXtn6vOelZ+mQd zxqCB9O2vIfiepjJen66p5s/abHjdX3wzLSwU1pgtAYKNHXR/PUdjt5aG5XHr2bXBo+oDi w8AFfZ5R1zw2oMdTEagYejOGxLWJOy7nB7GyhpLHzSkn1NGbUd73f28t9IUBzE9G86RTJv VOckJDcbFaUiUdREdwFiNHvb26j+hRaGjmpMCXO/fTLx6Ab/S+zoGFaou4pwZIE02TNAiY JMHyYmLawXSnR7ffKGNgD4RyFNg/mZSN7vO8XJUSXd1yZgPpbVMPXZ+dDiMvdA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4VJwGD2TCjzxb3; Tue, 16 Apr 2024 20:13:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 43GKDO1G039479; Tue, 16 Apr 2024 20:13:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 43GKDOsm039476; Tue, 16 Apr 2024 20:13:24 GMT (envelope-from git) Date: Tue, 16 Apr 2024 20:13:24 GMT Message-Id: <202404162013.43GKDOsm039476@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Warner Losh Subject: git: 5e8509073162 - stable/14 - loader: Add loader.exit List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 5e8509073162d52e13dd49a3c2fe112df2675935 Auto-Submitted: auto-generated The branch stable/14 has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=5e8509073162d52e13dd49a3c2fe112df2675935 commit 5e8509073162d52e13dd49a3c2fe112df2675935 Author: Warner Losh AuthorDate: 2024-02-27 03:19:58 +0000 Commit: Warner Losh CommitDate: 2024-04-16 19:54:28 +0000 loader: Add loader.exit Add loader.exit(status). While one can get alomst this behavior with loader.perform("quit"), quit doesn't allow a value to be returned to the firmware. The interpretation of 'status' is firmware specific. This can be used when autobooting doesn't work in scripts, for example, to allow the firmware to try something else... Sponsored by: Netflix Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D44094 (cherry picked from commit 9398a495eb305d5bf240bc998ee2f6128d75f4ca) --- stand/liblua/lutils.c | 16 ++++++++++++---- stand/lua/loader.lua.8 | 4 ++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/stand/liblua/lutils.c b/stand/liblua/lutils.c index 0be9f5f28ac3..874dc8bf7d5d 100644 --- a/stand/liblua/lutils.c +++ b/stand/liblua/lutils.c @@ -109,6 +109,13 @@ lua_perform(lua_State *L) return 1; } +static int +lua_exit(lua_State *L) +{ + exit(luaL_checkinteger(L, 1)); + return 0; +} + static int lua_command_error(lua_State *L) { @@ -380,14 +387,15 @@ lua_writefile(lua_State *L) #define REG_SIMPLE(n) { #n, lua_ ## n } static const struct luaL_Reg loaderlib[] = { - REG_SIMPLE(delay), - REG_SIMPLE(command_error), REG_SIMPLE(command), - REG_SIMPLE(interpret), - REG_SIMPLE(parse), + REG_SIMPLE(command_error), + REG_SIMPLE(delay), + REG_SIMPLE(exit), REG_SIMPLE(getenv), REG_SIMPLE(has_command), REG_SIMPLE(has_feature), + REG_SIMPLE(interpret), + REG_SIMPLE(parse), REG_SIMPLE(perform), REG_SIMPLE(printc), /* Also registered as the global 'printc' */ REG_SIMPLE(setenv), diff --git a/stand/lua/loader.lua.8 b/stand/lua/loader.lua.8 index ff3b91ddfb09..e5aee7e8602d 100644 --- a/stand/lua/loader.lua.8 +++ b/stand/lua/loader.lua.8 @@ -61,6 +61,10 @@ Returns the error string from the last command to fail. Like .Fn perform but the arguments are already parsed onto the stack. +.It Fn exit status +Exit the boot loader back to the firmware with a status of +.Va status . +The interpretation of this value is firmware specific. .It Fn interpret str Execute the loader builtin command .Va str