+/*
+ * Internal routine to make a device node.
+ */
+int
+_sysio_mknod(struct pnode *pno, mode_t mode, dev_t dev)
+{
+
+ if (pno->p_base->pb_ino)
+ return -EEXIST;
+
+ /*
+ * Support only regular, character-special and fifos right now.
+ * (mode & S_IFMT) == 0 is the same as S_IFREG.
+ */
+ if (!(S_ISREG(mode) || S_ISCHR(mode) || S_ISFIFO(mode)))
+ return -EINVAL;
+
+ if (IS_RDONLY(pno))
+ return -EROFS;
+ return (*pno->p_parent->p_base->pb_ino->i_ops.inop_mknod)(pno,
+ mode,
+ dev);
+}