Subject: Layered device driver question
To: None <tech@openbsd.org, tech-kern@netbsd.org>
From: Constantine Sapuntzakis <csapuntz@stanford.edu>
List: tech-kern
Date: 09/22/1999 11:48:16
I've got a device driver that would like to pass an ioctl request
to its parent. What is the best way of doing this?

A couple observations:

I will use the term "low-level device" to refer to the object
described by struct device *.

The low-level device tree is largely independent from the bdevsw and
cdevsw arrays.

Not every low-level device actually implements an
open/read/write/ioctl interface and thus not every low-level device
needs a bdevsw/cdevsw entry.

Given a struct device * to a low-level device with an
open/read/write/ioctl interface, there seems to be no easy way to get at the
function pointers to open, read, etc. Nor is there any easy way to get
the major device number. Is this because a single low-level device
can implement multiple block or character devices?

Thanks for any help,
-Costa