tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Time to merge the pgoyette-compat branch (take two)



At the request of reviewers, I have removed the "alias names" stuff,
and I've re-written the description of the .o --> .a change.  Here's
the revised request-for-review.

(I was going to just abandon this effort/branch, but the rest of the
changes are IMHO too important to discard.)


After several months of work, it's now (nearly) time to merge the
pgoyette-compat branch.  (Yeah, I know that many/most of you don't
"allow" modules into your environments in the first place, so none
of this really affects you at all.)


This branch includes the following major changes:

* Separation of the single "monolithic" compat module into multiple
 modules, one for each older version of NetBSD.

 With this, you can load only as much compat code as you want, without
 having to build a custom compat module.  (You still need a custom
 kernel to start with, in order not to have all the compat code being
 built-in.)  Sys-calls that are implemented in the compat module will
 now load only the necessary compat code, rather than the entire
 monolithic module.

* Elimination of the limit on the number of "required" modules (or
 "dependencies") for a module.  There was previously a limit of
 MAXMODDEPS (value 10), with a statically-allocated array;  now the
 array is dynamically allocated and expanded as needed.

  * Also eliminate the limit on the depth of recursive loading of
    required modules.  Previously there was a limit of six levels of
    recursion (MODULE_MAX_DEPTH), referencing a statically allocated
    array.  Now, the elements of that array are dynamically allocated
    as needed, and recursion depth has no practical limit.

* Extraction of some COMPAT_xx code that was previously intertwined
 with the main kernel build and not available in non-built-in modules.
 One example of this is the COMPAT_70 code for rtsock (which bit me
 when it was introduced, and was the main reason for undertaking the
 work on this branch).

* Removed linking of the .o kernel compat library into all kernels.
    This was introduced some time ago as a hack for including some
    support routines that weren't being properly included in the
    modules that needed them.  These support routines are now in their
    own module, and we no longer need to use the .o build method.  So
    we return to the original use of a .a compat library.  This also
    allows removal of a work-around that was deliberately introduced
    into the compat_sysv module, which had a side-effect of breaking
    auto-load of compat_sysv.

Other activity is documented in src/doc/COMPAT-branch-notes file.

There are a number of activities that still need to be worked on;  these
are also listed in the src/doc/COMPAT-branch-notes file.  None of these
activites should prevent merging of the branch, as the short-comings are
already present on the mainline.

I welcome any timely review and constructive feedback.  I'd like to get
this committed sometime in the next two or three weeks if possible.


+------------------+--------------------------+----------------------------+
| Paul Goyette     | PGP Key fingerprint:     | E-mail addresses:          |
| (Retired)        | FA29 0E3B 35AF E8AE 6651 | paul at whooppee dot com   |
| Kernel Developer | 0786 F758 55DE 53BA 7731 | pgoyette at netbsd dot org |
+------------------+--------------------------+----------------------------+


Home | Main Index | Thread Index | Old Index