Module Name:    src
Committed By:   christos
Date:           Sun Jun  3 20:59:49 UTC 2018

Added Files:
        src/external/cddl/osnet/sys/sys: README

Log Message:
Add a blurb of a general approach how to maintain these files.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/external/cddl/osnet/sys/sys/README

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Added files:

Index: src/external/cddl/osnet/sys/sys/README
diff -u /dev/null src/external/cddl/osnet/sys/sys/README:1.1
--- /dev/null	Sun Jun  3 16:59:49 2018
+++ src/external/cddl/osnet/sys/sys/README	Sun Jun  3 16:59:49 2018
@@ -0,0 +1,41 @@
+# $NetBSD: README,v 1.1 2018/06/03 20:59:49 christos Exp $
+
+General guidelines for system wrapper header maintainance.
+
+There are two kinds of system header files:
+        1. "infrastructure" headers that provide base definitions and
+           other stuff that other headers use (systm.h)
+        2.  "feature" headers that provide a specific feature (proc.h).
+
+The solaris ones generally augment ours; the template should be:
+
+solaris/foo.h:
+
+    #ifndef SOLARIS_SYS_FOO_H
+    #define SOLARIS_SYS_FOO_H
+
+    /*
+     * This include should not be in #ifdef KERNEL.
+     * It is the job of the header itself to protect itself.
+     * Unless Solaris exposes this header in userland, where
+     * it is probably better to fix our header...
+     */
+    #include_next <sys/foo.h>
+
+    /* More Solaris-specific definitions */
+
+    #endif /* SOLARIS_SYS_FOO_H */
+
+Now there caaes where the solaris headers expose more stuff than ours,
+so we need to include more of our system headers from theirs. When that
+happens the rule should be that:
+
+Their infrastructure headers should not include our feature headers,
+but can include our infrastructure headers, otherwise we end up with
+circular dependencies. Violations to the rule should be kept to a minimum
+and tested carefully.
+
+In the general case, if we want the augmented symbols we should include
+the solaris ones first in the search path.
+
+

Reply via email to