Re: serial.c

From: Theodore Y. Ts'o (tytso@MIT.EDU)
Date: Wed May 10 2000 - 18:02:01 EST


   Date: Wed, 10 May 2000 18:35:00 -0400 (EDT)
   From: Rich Bryant <rfb6435@osfmail.isc.rit.edu>

   Thanks for the response(Both Ted and Steve) I agree that changing the
   kernel isn't something easy and I am being asked to make or atleast look
   into some very major changes in order to fit a linux system into a very
   small system.

How small is small in this case?

   The fact that the drivers support multiple devices also makes it hard
   to know what I need and what I don't. The goal of my whole project is to
   create a version of Linux(preferebly Real Time) for an embedded board. The
   board is for educational use and the way the Kernel is organized is very
   forbidding to someone who only wants to look at specific areas and
   understand them. The fact that the board has limited hardware makes it an
   even greater challenge. I have no need for the majority of the drivers and
   in many cases large portions of the drivers I do need.

The whole point of the #ifdef's is so that you can easily create a
slimmed down version of the serial driver --- without having to edit
down the code; you just set a couple of #define's, and that's it.

As far as supporting multiple devices, serial.c supports 16550 and
upwardly compatible UART's. The code to support the extra UART's is
actually fairly small; and unless you're trying to shave off bytes, it's
likely not really worth it. Most of the time, support for the extra
uart's are in the setup or teardown code. And if you really want to get
rid of that, it's usually well encased in

        if (info->state->type == xxxx) {
                ...
        }

blocks.

You can probably also shrink the code by axing the autoirq code, and the
uart autoconfiguration code. Both of these are fairly well isolated.
You can also drop the timer code, although then you lose protection
against dropped interrupts causing your serial driver to lock up.

Basically, a quick exercise with dropping obvious subssytem allowed me
half the size of the serial driver.

But then again, I don't what kind of sizing requirements you're up
against, and how much functionality you're preparied to suffer to come
in under those sizing guidelines.

                                                - Ted

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon May 15 2000 - 21:00:16 EST