From owner-freebsd-arch Mon Sep 18 22:45: 2 2000 Delivered-To: freebsd-arch@freebsd.org Received: from rover.village.org (rover.village.org [204.144.255.49]) by hub.freebsd.org (Postfix) with ESMTP id 7D67D37B424 for ; Mon, 18 Sep 2000 22:44:59 -0700 (PDT) Received: from harmony.village.org (harmony.village.org [10.0.0.6]) by rover.village.org (8.9.3/8.9.3) with ESMTP id XAA93663 for ; Mon, 18 Sep 2000 23:44:58 -0600 (MDT) (envelope-from imp@harmony.village.org) Received: from harmony.village.org (localhost.village.org [127.0.0.1]) by harmony.village.org (8.9.3/8.8.3) with ESMTP id XAA36298 for ; Mon, 18 Sep 2000 23:44:45 -0600 (MDT) Message-Id: <200009190544.XAA36298@harmony.village.org> To: arch@freebsd.org Subject: binary compat guidelines Date: Mon, 18 Sep 2000 23:44:45 -0600 From: Warner Losh Sender: owner-freebsd-arch@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG I'm wondering if we (the FreeBSD project) has guidelines for kernel binary compatibility over time. What things are allowed? What things are bogus? I've been following the rules. I've been focused on the card driver <-> bus driver interface, so these are slanted. o use kobj o don't add args to functions called with kobj o use only basic types in args. If pointers are used, they aren't dereferenced by the driver directly. o use ivars. icky but useful. o OK to make calls to external functions, not all calls must be brokered through kobj. These are convenience functions. o no sizeof(struct foo) o no offsetof And some silly things I've done or cleaned up in the past: o Don't have module symbol interdependencies Any others? Anything stupid I'm doing? Warner To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message