On 9/27/22 15:33, Hans Petter Selasky wrote:
This change has resulted in some external breakage:

drm_sysctl_freebsd.c:93:2: error: no member named 'sle_next' in 'struct sysctl_oid::(unnamed at /usr/src/sys/sys/sysctl.h:189:2)'
        SLIST_FOREACH(oid, SYSCTL_CHILDREN(drioid), oid_link) {
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/sys/sys/queue.h:236:14: note: expanded from macro 'SLIST_FOREACH'
            (var) = SLIST_NEXT((var), field))
                    ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/sys/sys/queue.h:272:46: note: expanded from macro 'SLIST_NEXT'
#define SLIST_NEXT(elm, field)  ((elm)->field.sle_next)

Maybe we should have a SYSCTL_FOREACH() macro?

--HPS

The fix is simple enough:

diff --git a/./work/drm-kmod-drm_v5.10.113_7/drivers/gpu/drm/drm_sysctl_freebsd.c.orig b/./work/drm-kmod-drm_v5.10.113_7/drivers/gpu/drm/drm_sysctl_freebsd.c
index 6bb5ece..2956210 100644
--- a/./work/drm-kmod-drm_v5.10.113_7/drivers/gpu/drm/drm_sysctl_freebsd.c.orig
+++ b/./work/drm-kmod-drm_v5.10.113_7/drivers/gpu/drm/drm_sysctl_freebsd.c
@@ -90,7 +90,7 @@ drm_sysctl_init(struct drm_device *dev)

        /* Find the next free slot under hw.dri */
        i = 0;
-       SLIST_FOREACH(oid, SYSCTL_CHILDREN(drioid), oid_link) {
+       RB_FOREACH(oid, sysctl_oid_list, SYSCTL_CHILDREN(drioid)) {
                if (i == oid->oid_name[0] - '0' && oid->oid_name[1] == 0)
                        i++;
        }


--HPS

Reply via email to