Hi Garrett, Artem and all,

>> So I see three options to get my implementation done at the moment:
>>
>> 1) Use one driver, change the stream ops by modifying the qinfos at 
>> open time (as above)
>> 2) Use one driver and two modules, somehow pushing the modules over 
>> the driver in the stream (have not found out yet how to do this)
>> 3) Use one driver and change all stream functions into "proxies"
>>
 > [...]
 >
 > (Garrett)
> 
> When I've been faced with this problem, I've chosen option #3.  It 
> doesn't violate any DDI, and has minimal overhead cost.

I've now got option #1 running (not final, but in principle it works) and the 
good news is that it looks like this was even allowed:

http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/sys/stream.h#71

      71  *         - q_qinfo: can be modified before qprocson().

My main trouble today was that my driver should to be a client of both usbser 
and gldv3 (mac) and gldv3 drivers want minor #0, which originally was taken by 
usbser. After I modified usbser to use only higher minors, I was able to at 
least plumb a gldv3 interface AND use the serials at the same time.

I'll see how it goes, but the issue of other interfaces making assumptions 
which 
conflict with each other will probably remain, so I guess I will come back to 
option #2 later.

Option #3 is not as nice as thought, because in my case

- it does not solve the minor number conflicts (while option #2 would)
- gldv3 and usbser use different STREAMS module_info settings, so I really 
should have differnt q_qinfos anyway.

Thanks for listening and thanks again to Garret and Artem for their thoughts 
and 
help. It is very much appreciated.

Nils
_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

Reply via email to