Mark Johnson wrote:
>
>
> Garrett D'Amore wrote:
>> Edward Pilatowicz wrote:
>>> On Tue, Oct 09, 2007 at 08:59:06PM -0700, Garrett D'Amore wrote:
>>>
>>>> I find the nomenclature here a bit confusing.
>>>>
>>>> ddi_copyin or copyin are most often used to copy from user space
>>>> *in* to
>>>> kernel space.
>>>>
>>>> ddi_copyout or copyout likewise usually reference copying data *out*
>>>> from the kernel to user space.
>>>>
>>>
>>> actually, iirc this isn't correct.
>>>
>>> ddi_copyin() will copy from userland -or- the kernel into the kernel.
>>> ddi_copyout() will copy from the kernel to userland -or- the kernel.
>>> this is why drivers should use these routies vs copyin() and copyout().
>>> if drivers use copyin() and copyout() and they are not layering safe
>>> and can not be accessed from within the kernel via the ldi.
>>>
>>
>> Yes, that is the "in" or the "out" is taken relative to the kernel.
>> The other side can be userspace, or kernel space (but is usually
>> userspace). (You'll note I said "most often" and "usually" above.)
>> The point is the direction of the reference.
>>> these new bp "in/out" interfaces behave the same way the ddi "in/out"
>>> interfaces do, which (to me) makes complete sense to me.
>>>
>>
>> I must be confused then. Because I read the documents and came away
>> believing that bp_copyin() copied into a buf (which could be user or
>> kernel space) from a kernel vaddr. That's backwards from ddi_copyin,
>> which copies from user (or kernel) space "in" to a kernel vaddr.
>>
>>>
>>>> In otherwords, the "in/out" are normally used to in reference to
>>>> kernel
>>>> space.
>>>>
>>>> Your proposal, bp_copyin makes the "in" for this API in reference
>>>> to the
>>>> buf. (Which may or may not be userspace.)
>>>>
>>>>
>>>
>>> correct. i see no problem with this.
>>>
>>
>> Again, I just find it backwards. The one part of the argument which
>> is a fixed type of address, the kernel vaddr, is the point of
>> reference in the ddi_copyin/copyin, but *not* in the bp_copyin.
>>
>> Its a switch of the point of reference that I find confusing.
>
>
> bp_copyin - copy into a buf_t
> bp_copyout - copy out of a buf_t
>
> I think it would be more confusing if it were the other way
> around.
>
> bp_ makes the reference point want to be buf_t in my mind.
>
>
> If your not happy with that, how about...
> bp_copyto - copy into a buf_t
> bp_copyfrom - copy out of a buf_t
That would, IMO, be better, because it doesn't overlap with the naming
convention set by copyin/ddi_copyin.
-- Garrett
>
>
>
> MRJ
>
>