Subject: Re: Source for SCSI driver
To: Allen Briggs <>
From: Dan Menchaca <>
List: macbsd-development
Date: 05/03/1995 12:29:13
                      Just when you thought it was safe to leave your
                      RE>>Source for SCSI driver


Well, I'll have to investigate this further.  Linux has a CAM implementation
according to my friend.  I'm researching the TWAIN interface for scanners.  I
wanted to toy with SCSI and my scanner.  How knows, if I become really
familiar with SCSI, I'll implement CAM (w/help) for MacBSD. ;-)

I don't know what CAM has to do with drivers.  What I believe is that CAM is a
layer in between the driver and the interface to SCSI.  The SCSI interface is
important to user accessible applications like formatting programs, scanner
programs, CD-Audio players, tape backup programs, etc.  On other systems this
is important.  For unix, non-storage operations for SCSI devices, it is
important to at some point have this interface or something similiar.

Date: 5/3/95 12:11 PM
To: Dan Menchaca
From: Allen Briggs
> CAM is a specification that allows one to access a SCSI bus through a common
> set of APIs.  This means that from UNIX to UNIX, accessing the SCSI bus will
> be the same as far as API calls go.

Ahh...  OK.  I think I see.  It provides the interface to the scsi bus
for things like CD-ROM drivers or easier addition of things like custom
drivers or OCR engines or some such?  That is, it's an interface to
drivers for drivers?

There is no standard w/in Unix for accessing scsi devices.  I have
noticed that at least one or two vendors are starting to use CAM or
something similar (OSF/1 on the DEC Alpha appears to use CAM), but
the usual case is that the SCSI system is accessed directly through
specific drivers.

If you want to get direct access to a device from a user-program (not
kernel), some systems (including NetBSD) allow some access to the bus
through a "high level driver" ioctl interface.  This then communicates
with the lower level (card-specific) drivers to send and recieve raw
blocks.  I don't know how fully implemented this is or if anyone's using
(i.e. testing ;-) it.

CAM might be a win if it could be implemented efficiently w/o breaking
anything.  When I looked at the spec once, it seemed pretty large,
though, and implementing it looked like a job for a CAM expert.


Allen Briggs - end killing - ** MacBSD == NetBSD/mac68k

------------------ RFC822 Header Follows ------------------ (5.0/1-Nov-1994-eef)
	id AA12887; Wed, 3 May 1995 12:05:57 +0800
	id AA20059; Wed, 3 May 95 15:06:43 -0400 (EDT)
From: (Allen Briggs)
Message-Id: <>
Subject: Re: Source for SCSI driver
To: (Dan Menchaca)
Date: Wed, 3 May 1995 15:06:41 -0400 (EDT)
In-Reply-To: <> from "Dan Menchaca" at May
3, 95 11:11:04 am
Content-Type: text
Content-Length: 1390