Subject: Re: Understanding foo_open, foo_read, etc.
To: None <tech-kern@NetBSD.org>
From: der Mouse <mouse@Rodents.Montreal.QC.CA>
List: tech-kern
Date: 08/29/2006 18:39:43
> What mystifies me is that the cdevsw open routine on NetBSD fills in
> a struct file *, then "returns" it using fdclone (which actually does
> deep magic elsewhere in the kernel to drop the cdevsw-based file
> entry it had already created, and take the new one instead),

Yes, this is what I was referring to when I said I'd simplified away
the stuff done for /dev/fd.  (Cloning devices have magic of their own,
but it's different magic.)

> and the FreeBSD one just returns zero, letting the cdevsw structure
> do the work...

> Because the FreeBSD code is cloning the device, and the NetBSD code
> isn't.

Hmm, I too find that difference mysterious.

> The obvious thing I was missing was [...], and the subtle thing I was
> missing was [...].

Ah.  Yes, given your current explanation, I can see how you could get
confused - and I think you have probably managed to get unconfused.

/~\ The ASCII				der Mouse
\ / Ribbon Campaign
 X  Against HTML	       mouse@rodents.montreal.qc.ca
/ \ Email!	     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B