RE: Binary drivers

Andrea Arcangeli (andrea@suse.de)
Mon, 6 Dec 1999 15:04:47 +0100 (CET)


On Sun, 5 Dec 1999, Bret Indrelee wrote:

>5. It used to be that you would just change the task state, now you have to
>use set_task_state() for 2.3 and later.

There's none interface out there that could prevent you to fix the
wait-event SMP race inside your own device driver (you must provide a new
binary driver to fix it).

If you don't need to provide a new driver it means you was just doing
things like this via the binary-only API:

static int a;

void set_a_1(void)
{
a = 1;
}

Only in such case you would not need to recompile your driver.

NOTE: during the driver developement you didn't known that `a = 1' was a
problem and so there was no one point to implement a set_a_1 there and you
gone inlined obviously.

If the driver would been GPL'd and kept updated into the kernel, I would
have just fixed such an SMP race myself silenty at 2.3.16 time and the
vendor would find his driver fixed and updated automagically.

There are things that can't be fixed without recompiling the
driver because using of an interface (pointer to function) for each
single instruction (like in the above example) will slowdown the kernel
way too much.

Andrea

-
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/