Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 Mar 2001 15:27:40 -0800
From:      Mike Smith <msmith@freebsd.org>
To:        Alexey Dokuchaev <danfe@inet.ssc.nsu.ru>
Cc:        hackers@freebsd.org
Subject:   Re: Some PCI-related programming things 
Message-ID:  <200103212327.f2LNReh03247@mass.dis.org>
In-Reply-To: Your message of "Thu, 22 Mar 2001 05:18:50 %2B0600." <Pine.LNX.4.10.10103220509220.26570-100000@inet.ssc.nsu.ru> 

next in thread | previous in thread | raw e-mail | index | archive | help
> > Ioctls allow user processes to make function calls within a device 
> > driver; they are a mechanism for exporting functionality from a device 
> > driver out into userspace.
> 
> I know that, of course.

This wasn't clear from your example.

> > You don't call them from other device drivers, no.  There are exported
> > interfaces inside the kernel for doing this, and you will understand
> > everything much better if you go look at a simple FreeBSD PCI device
> > driver, particularly the _probe and _attach functions.
> 
> Look, I am *not* coding a PCI driver.  I have looked at various examples
> in sound/pci/ and I know what PCI device driver should look like.

Ok.  So why are you attempting to manipulate PCI configuration space?

> What I am doing is *porting* linux *character* device driver to FreeBSD.

A device driver still talks to hardware, and by the sound of it, your
hardware is PCI hardware.  Since you won't actually tell me what it is
you're actually doing with any sort of useful level of detail, it is very
hard to give you useful answers.

> That is, if original version called all that linuxish pci_whatever()
> functions, I have to provide the same functionality under FreeBSD.  I
> didn't know how to do this.  What I did was, I said man pci, from there I
> figured out about pciconf utility.  I took a look at it, and thought, ok,
> this must be the way I have to go for under FreeBSD.

You're writing a device driver.  Look at other device drivers that behave 
similarly.  Whether the driver has a character interface or not is more 
or less irrelevant at this stage. 8)

> Trust me, if I wanted to code a PCI dev driver, I would certainly not do
> this.  I have a code to take a look at, and I only ask questions when I
> seem to fail to comprehend going of things from the code.  It's not
> written anywhere I can't use ioctl from char device driver.  Or is it?

Firstly, there is no such thing as "a character device driver".
Secondly, if it's running inside the kernel, it doesn't matter what it 
is; you don't make ioctl calls (exception: ABI shims).

If you're not going to explain, in more specific terms, what it is you're 
doing, I'm just going to have to keep guessing.  So far, I don't have 
enough to go on to give you very good answers; the more detail you give 
me, the better I can help you.  If you don't like the answers you're 
getting, this should be a clue to you that you're not giving me enough 
detail. 8)

Regards,
Mike

-- 
... every activity meets with opposition, everyone who acts has his
rivals and unfortunately opponents also.  But not because people want
to be opponents, rather because the tasks and relationships force
people to take different points of view.  [Dr. Fritz Todt]
           V I C T O R Y   N O T   V E N G E A N C E



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200103212327.f2LNReh03247>