Date: Fri, 07 Aug 2026 01:48:10 +0000 From: Kyle Evans <kevans@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Subject: git: 3e0270c52875 - stable/15 - kern: osd: abstract away the math for locating a slot method Message-ID: <6a75395a.3be07.189c82dd@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch stable/15 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=3e0270c52875faefad6ddce7285f8c8047d423ef commit 3e0270c52875faefad6ddce7285f8c8047d423ef Author: Kyle Evans <kevans@FreeBSD.org> AuthorDate: 2026-06-25 03:08:05 +0000 Commit: Kyle Evans <kevans@FreeBSD.org> CommitDate: 2026-08-06 23:35:54 +0000 kern: osd: abstract away the math for locating a slot method It's relatively simple, but we'll do it a couple of times; pull it out into a macro. Reviewed by: imp (previous version), jamie (cherry picked from commit 72ebcfae48c42cb28ab6142980416082f8d70abc) --- sys/kern/kern_osd.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sys/kern/kern_osd.c b/sys/kern/kern_osd.c index 93809ccab8e5..b64735e7f93a 100644 --- a/sys/kern/kern_osd.c +++ b/sys/kern/kern_osd.c @@ -73,6 +73,9 @@ SYSCTL_INT(_debug, OID_AUTO, osd, CTLFLAG_RWTUN, &osd_debug, 0, "OSD debug level } \ } while (0) +#define OSD_METHOD(osdm, slot, method) \ + ((osdm).osd_methods[((slot) - 1) * (osdm).osd_nmethods + (method)]) + static void do_osd_del(u_int type, struct osd *osd, u_int slot, int list_locked); @@ -139,8 +142,8 @@ osd_register(u_int type, osd_destructor_t destructor, const osd_method_t *method osdm[type].osd_destructors[i] = destructor; if (osdm[type].osd_nmethods != 0) { for (m = 0; m < osdm[type].osd_nmethods; m++) - osdm[type].osd_methods[i * osdm[type].osd_nmethods + m] - = methods != NULL ? methods[m] : NULL; + OSD_METHOD(osdm[type], i + 1, m) = + methods != NULL ? methods[m] : NULL; } sx_xunlock(&osdm[type].osd_module_lock); return (i + 1); @@ -391,8 +394,7 @@ osd_call(u_int type, u_int method, void *obj, void *data) /* Hole in the slot map; avoid dereferencing. */ if (osdm[type].osd_destructors[i] == NULL) continue; - methodfun = osdm[type].osd_methods[i * osdm[type].osd_nmethods + - method]; + methodfun = OSD_METHOD(osdm[type], i + 1, method); if (methodfun != NULL && (error = methodfun(obj, data)) != 0) break; }home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a75395a.3be07.189c82dd>
