summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_conf.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/kern_conf.c')
-rw-r--r--sys/kern/kern_conf.c36
1 files changed, 35 insertions, 1 deletions
diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c
index 2f6dad1..b403dbf 100644
--- a/sys/kern/kern_conf.c
+++ b/sys/kern/kern_conf.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: kern_conf.c,v 1.8 1995/12/21 20:09:39 julian Exp $
+ * $Id: kern_conf.c,v 1.9 1995/12/22 15:56:33 phk Exp $
*/
#include <sys/param.h>
@@ -157,3 +157,37 @@ int TTYPE##_add(dev_t *descrip, \
ADDENTRY(bdevsw, nblkdev)
ADDENTRY(cdevsw, nchrdev)
+
+void
+cdevsw_make(struct bdevsw *from)
+{
+ struct cdevsw *to = from->d_cdev;
+
+ if (!to)
+ panic("No target cdevsw in bdevsw");
+ to->d_open = from->d_open;
+ to->d_close = from->d_close;
+ to->d_read = rawread;
+ to->d_write = rawwrite;
+ to->d_ioctl = from->d_ioctl;
+ to->d_stop = nostop;
+ to->d_reset = nullreset;
+ to->d_devtotty = nodevtotty;
+ to->d_select = seltrue;
+ to->d_mmap = nommap;
+ to->d_strategy = from->d_strategy;
+ to->d_name = from->d_name;
+ to->d_bdev = from;
+ to->d_maj = -1;
+}
+
+void
+bdevsw_add_generic(int bdev, int cdev, struct bdevsw *bdevsw)
+{
+ dev_t dev;
+ cdevsw_make(bdevsw);
+ dev = makedev(cdev, 0);
+ cdevsw_add(&dev, bdevsw->d_cdev, NULL);
+ dev = makedev(bdev, 0);
+ bdevsw_add(&dev, bdevsw , NULL);
+}
OpenPOWER on IntegriCloud