From owner-freebsd-hackers@FreeBSD.ORG Wed Jun 18 13:38:35 2003 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4E12D37B401 for ; Wed, 18 Jun 2003 13:38:35 -0700 (PDT) Received: from gatorzone.com (gatormail.gatorzone.com [216.53.131.133]) by mx1.FreeBSD.org (Postfix) with ESMTP id 85BF543FB1 for ; Wed, 18 Jun 2003 13:38:34 -0700 (PDT) (envelope-from cd_freebsd@gatorzone.com) Date: Wed, 18 Jun 2003 16:43:44 -0400 Message-Id: <200306181643.AA112656480@gatorzone.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii From: "cd_freebsd" To: X-Mailer: Subject: Performing Ioctls to Devices in Kernel X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: cd_freebsd@gatorzone.com List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jun 2003 20:38:35 -0000 I want to be able to send IOCTL commands to standard devices (fdd,cdrom,kbd) from my kernel driver. Whereas I can do reads and writes using the vn_rdwr commands, how do I do IOCTLS? VOP_IOCTL keeps giving me EINVAL when I try to send the DIOCGDINFO IOCTL. My code is basically NDINIT(&_VdFloppyND, LOOKUP, FOLLOW, UIO_SYSSPACE, "/dev/fd0", p); vn_open(&_VdFloppyND, FREAD, 0); osError = VOP_IOCTL(_VdFloppyND.ni_vp, DIOCGDINFO, (caddr_t)&dl, 0, // fflags ??? p->p_ucred, p); Questions: 1) Is there something I am doing wrong? 2) Should I use something else other than vn_open/vn_rdwr/VOP_*? The error occurs regardless whether the floppy is mounted or not.