Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Jun 2002 10:14:48 -0700 (PDT)
From:      Maksim Yevmenkin <m_evmenkin@yahoo.com>
To:        Harti Brandt <brandt@fokus.gmd.de>, Terry Lambert <tlambert2@mindspring.com>
Cc:        Maksim Yevmenkin <m_evmenkin@yahoo.com>, current@FreeBSD.ORG
Subject:   Re: Device cloning
Message-ID:  <20020611171448.77703.qmail@web13305.mail.yahoo.com>
In-Reply-To: <20020611114039.L35453-100000@beagle.fokus.gmd.de>

next in thread | previous in thread | raw e-mail | index | archive | help
Hackers,

[...]

> TL>I don't think the original poster wanted cloning for support on
> TL>physical devices for which there was a 1:1 relationship anyway
> TL>(8^)), but there *are* cases where it could be useful.
> TL>
> TL>Actually, I think the original poster never really disclosed *what*
> TL>they wanted to use the feature for...
> 
> That's true...
> 
> From reading the original post I was under the impression that this is
> again a 'hey, I write a device driver and I need to track the number of
> opens and to tack a context onto each open' that periodically comes up.
> If I'm wrong, well, sorry then...

I'm sorry people :) I should have been more specific. Here is
what i meant. I'm working on Bluetooth stack for FreeBSD. Everything
is implemented in Netgraph. The real device driver nodes are connected
to HCI layer. You can talk to any Bluetooth device via HCI layer. It
does not really matter what kind of device you have, PC-CARD, serial
or USB dongle. They all MUST talk via HCI. So HCI is not really a
device driver, and, IMO, it is not a pseudo device driver. It sort
of looks like /dev/tcp :)

Currently there is a single "control" hook for every HCI node. Control
application connects to the hook and sends HCI commands and receives
HCI events. It does work, but once the hook is connected, nobody else
can connect to the same hook. That is a limitation, IMO. It would 
really be nice to have several control applications. For example,

- HCI dump  (a-la tcpdump)
- HCI link key/PIN manager (security)
 
My choices were:

1) Create /dev/hci[0-9]+ for every HCI node and implement cloning

   pid 1 -> /dev/hci0          -+-> hci0 node -> device driver node
   pid 2 -> /dev/hci0(clone 0) -+

   This will not work work.

2) Raw HCI sockets

   The problem here is how to identify device, i.e. what to put
   into sockaddr? Netgraph node name? May be not a good choice,
   because it can be changed at any time. Device BD_ADDR? Does not
   work also, because in order to get BD_ADDR you must send HCI
   command to the device.
     
3) Multiple "control/raw" Netgraph hooks

   I like it best for now. Each hook will have a filter and
   every message/data will be delivered to each hook if it has 
   not been filtered.

Anyway, i got answers i wanted. Thanks everyone.

thanks,
max
 

__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com

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




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