From nobody Fri Sep 16 15:53:57 2022 X-Original-To: dev-commits-src-main@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 4MTdsd4Pqzz4cKwH; Fri, 16 Sep 2022 15:53:57 +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 4MTdsd3lNfz3hRC; Fri, 16 Sep 2022 15:53:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1663343637; 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=+tSBhGu4D9T0simezV+3vmvLp4ZmYPXeQX7cbfrOfqA=; b=Hijp6WY20kX+YbCrlMJ3SDfpH7fNaYIC38a2wbembtAddXYJg5zRkUq4LhRKtRGnjKtg8q /qa3ylki8Bnk7coFlCBZ+Tr44niOR6OVy8MEpR7mbh5BSDH9LahA9t9Q8JklppeW6poj/n n5uDB7WClnMKf6KgCTluKmQkOFDwdoLh/EJ34pIhu+w0zQX9LvN8oJ+y4t4Td52Y3PV/CK bAHHdNJq+FX8yHMALchO8GPoFKAkO+nuTBXfSapITeKD8QUsNzdzw+XANBgip1leMbxLzu 8dCmT4xHyI5Lizz86M+rbfwYU/YedzJZNg1R4m7VY/yW1UclCZ3e9ux5oGJ4BQ== 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 4MTdsd2s6gzPlb; Fri, 16 Sep 2022 15:53:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 28GFrvDl086454; Fri, 16 Sep 2022 15:53:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 28GFrv9J086453; Fri, 16 Sep 2022 15:53:57 GMT (envelope-from git) Date: Fri, 16 Sep 2022 15:53:57 GMT Message-Id: <202209161553.28GFrv9J086453@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 2e6ed47a4609 - main - stand: Move MOD_xxx macros from modinfo.h to .c List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 2e6ed47a4609ff03a9308a173c64900485172c22 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1663343637; 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=+tSBhGu4D9T0simezV+3vmvLp4ZmYPXeQX7cbfrOfqA=; b=AibcIswpDx3557BZ3hMt79iiZLt8xuVBKZZXXbiW56WCXmb1/QMLBL5B1g2kgnZY0QpBER NaePItgHNWx+2lASrLw+0/ORU9nsKYw0DCd/BcmScjh50cov0k+k4fQHCT7WAJf3wSQ93Y v0MME/OjlsHv+wX6GJwPAsRMqcZjizKXkg93Qo8XIp0zVOhQ3s+NRgtJDHllIgvMXYjuBV U5hAecKtnRurcj5qPVPJ6qBSWrtIHTualMkAh8j39Vvkk6ch6MxHzPY7cTkqpy04CNPCGg tylfD7+gJyngUduPLaTZ+DWdLJf0CYtXkYFyGW1oluaH/8mjQIiBqlTdx6+sUQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1663343637; a=rsa-sha256; cv=none; b=fehdeoKtypM1DBGKmqce0nRr/ond2awdHpE3EVkvhgpC0NHe8GZbSgav+hmdgswiC7nugH mZD7250pDjUITqt/WzaAU+3wsch6yufzjsBYwBuABqnTDdzPoBHmLzfjYO0ILHsP2CrNAs KkV9UcufraNnvsnycbhqHTqxaRB20Yw0HC7KbcjE+KZe6FJtCRuCfZeY0XK/9uJMcaJHme o/fGFCyQH95vq+GttVxavSAgHmqR/8Tfc7AMAsUZEkWy+kHyHWLk/s/O+fO56AzUHi8PHy 7+RsBx5We1llJec4Q0R54XQ4YsVFSvGI72x2V/qKsMpDfCEg64eW4o9StJb/MA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=2e6ed47a4609ff03a9308a173c64900485172c22 commit 2e6ed47a4609ff03a9308a173c64900485172c22 Author: Warner Losh AuthorDate: 2022-09-16 15:08:52 +0000 Commit: Warner Losh CommitDate: 2022-09-16 15:18:56 +0000 stand: Move MOD_xxx macros from modinfo.h to .c Now that MOD_xxx macros are modinfo.c, they don't need to be in modinfo.h. Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D36573 --- stand/common/modinfo.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++- stand/common/modinfo.h | 63 ----------------------------------------------- 2 files changed, 65 insertions(+), 64 deletions(-) diff --git a/stand/common/modinfo.c b/stand/common/modinfo.c index a274890ace64..15116b3b9b78 100644 --- a/stand/common/modinfo.c +++ b/stand/common/modinfo.c @@ -42,7 +42,69 @@ #include "bootstrap.h" #include "modinfo.h" -static int align; +/* + * Copy module-related data into the load area, where it can be + * used as a directory for loaded modules. + * + * Module data is presented in a self-describing format. Each datum + * is preceded by a 32-bit identifier and a 32-bit size field. + * + * Currently, the following data are saved: + * + * MOD_NAME (variable) module name (string) + * MOD_TYPE (variable) module type (string) + * MOD_ARGS (variable) module parameters (string) + * MOD_ADDR sizeof(vm_offset_t) module load address + * MOD_SIZE sizeof(size_t) module size + * MOD_METADATA (variable) type-specific metadata + * + * Clients are required to define a MOD_ALIGN(l) macro which rounds the passed + * in length to the required alignment for the kernel being booted. + */ + +#define COPY32(v, a, c) { \ + uint32_t x = (v); \ + if (c) \ + archsw.arch_copyin(&x, a, sizeof(x)); \ + a += sizeof(x); \ +} + +#define MOD_STR(t, a, s, c) { \ + COPY32(t, a, c); \ + COPY32(strlen(s) + 1, a, c) \ + if (c) \ + archsw.arch_copyin(s, a, strlen(s) + 1);\ + a += MOD_ALIGN(strlen(s) + 1); \ +} + +#define MOD_NAME(a, s, c) MOD_STR(MODINFO_NAME, a, s, c) +#define MOD_TYPE(a, s, c) MOD_STR(MODINFO_TYPE, a, s, c) +#define MOD_ARGS(a, s, c) MOD_STR(MODINFO_ARGS, a, s, c) + +#define MOD_VAR(t, a, s, c) { \ + COPY32(t, a, c); \ + COPY32(sizeof(s), a, c); \ + if (c) \ + archsw.arch_copyin(&s, a, sizeof(s)); \ + a += MOD_ALIGN(sizeof(s)); \ +} + +#define MOD_ADDR(a, s, c) MOD_VAR(MODINFO_ADDR, a, s, c) +#define MOD_SIZE(a, s, c) MOD_VAR(MODINFO_SIZE, a, s, c) + +#define MOD_METADATA(a, mm, c) { \ + COPY32(MODINFO_METADATA | mm->md_type, a, c);\ + COPY32(mm->md_size, a, c); \ + if (c) \ + archsw.arch_copyin(mm->md_data, a, mm->md_size);\ + a += MOD_ALIGN(mm->md_size); \ +} + +#define MOD_END(a, c) { \ + COPY32(MODINFO_END, a, c); \ + COPY32(0, a, c); \ +} + #define MOD_ALIGN(l) roundup(l, align) vm_offset_t @@ -53,7 +115,9 @@ md_copymodules(vm_offset_t addr, bool kern64) uint64_t scratch64; uint32_t scratch32; int c; + int align; + align = kern64 ? sizeof(uint64_t) : sizeof(uint32_t); c = addr != 0; /* start with the first module on the list, should be the kernel */ for (fp = file_findfile(NULL, NULL); fp != NULL; fp = fp->f_next) { diff --git a/stand/common/modinfo.h b/stand/common/modinfo.h index 3d7f26a3c963..fc56173e1c51 100644 --- a/stand/common/modinfo.h +++ b/stand/common/modinfo.h @@ -6,69 +6,6 @@ #ifndef COMMON_MODINFO_H #define COMMON_MODINFO_H -/* - * Copy module-related data into the load area, where it can be - * used as a directory for loaded modules. - * - * Module data is presented in a self-describing format. Each datum - * is preceded by a 32-bit identifier and a 32-bit size field. - * - * Currently, the following data are saved: - * - * MOD_NAME (variable) module name (string) - * MOD_TYPE (variable) module type (string) - * MOD_ARGS (variable) module parameters (string) - * MOD_ADDR sizeof(vm_offset_t) module load address - * MOD_SIZE sizeof(size_t) module size - * MOD_METADATA (variable) type-specific metadata - * - * Clients are required to define a MOD_ALIGN(l) macro which rounds the passed - * in length to the required alignment for the kernel being booted. - */ - -#define COPY32(v, a, c) { \ - uint32_t x = (v); \ - if (c) \ - archsw.arch_copyin(&x, a, sizeof(x)); \ - a += sizeof(x); \ -} - -#define MOD_STR(t, a, s, c) { \ - COPY32(t, a, c); \ - COPY32(strlen(s) + 1, a, c) \ - if (c) \ - archsw.arch_copyin(s, a, strlen(s) + 1);\ - a += MOD_ALIGN(strlen(s) + 1); \ -} - -#define MOD_NAME(a, s, c) MOD_STR(MODINFO_NAME, a, s, c) -#define MOD_TYPE(a, s, c) MOD_STR(MODINFO_TYPE, a, s, c) -#define MOD_ARGS(a, s, c) MOD_STR(MODINFO_ARGS, a, s, c) - -#define MOD_VAR(t, a, s, c) { \ - COPY32(t, a, c); \ - COPY32(sizeof(s), a, c); \ - if (c) \ - archsw.arch_copyin(&s, a, sizeof(s)); \ - a += MOD_ALIGN(sizeof(s)); \ -} - -#define MOD_ADDR(a, s, c) MOD_VAR(MODINFO_ADDR, a, s, c) -#define MOD_SIZE(a, s, c) MOD_VAR(MODINFO_SIZE, a, s, c) - -#define MOD_METADATA(a, mm, c) { \ - COPY32(MODINFO_METADATA | mm->md_type, a, c);\ - COPY32(mm->md_size, a, c); \ - if (c) \ - archsw.arch_copyin(mm->md_data, a, mm->md_size);\ - a += MOD_ALIGN(mm->md_size); \ -} - -#define MOD_END(a, c) { \ - COPY32(MODINFO_END, a, c); \ - COPY32(0, a, c); \ -} - vm_offset_t md_copymodules(vm_offset_t addr, bool kern64); #endif /* COMMON_MODINFO_H */