Hi Oliver
Thanks for patience and time!
I would like to present my question in different way.
1) I have written a Kernel USB driver with open, ioctl , probe and
disconnect
2) Now i want to write an application above that. For example
main()
{
int file_desc, ret_val;
char *msg = "Message passed by ioctl\n";
file_desc = open(DEVICE_FILE_NAME, 0); ====> How do i find the name of the
USB device along with the path
if (file_desc < 0) {
printf ("Can't open device file: %s\n",
DEVICE_FILE_NAME);
exit(-1);
}
ret_val = ioctl(file_desc, IOCTL_SET_MSG, msg);
if (ret_val < 0) {
printf ("ioctl_set_msg failed:%d\n", ret_val);
exit(-1);
}
close(file_desc);
}
My Question :
In the above code "open" requires a file name. How do i find the name of the
USB device along with the path ?
TIA
OuJin
----- Original Message -----
From: "Oliver Neukum" <[EMAIL PROTECTED]>
To: <[email protected]>
Cc: "oujin.rera" <[EMAIL PROTECTED]>
Sent: Friday, July 01, 2005 1:57 PM
Subject: Re: [linux-usb-devel] opening a device
Am Freitag, 1. Juli 2005 07:42 schrieb oujin.rera:
> Hi
>
> I have a very basic question.
>
> I have written a Kernel driver for an USB device. Now I want to write an
> user space application to open the device and get the handle. What will
the
> parameter(Path) to the "open" function in the user application. How will
I
> find to
> which hub port my device is connected ?
>
> Any input will be highly useful!!
Taking the printer driver as an example.
You have a data structure here called usblp for your interface
In probe:
usb_set_intfdata (intf, usblp);
^^^ associate the interface to your data structure
usblp->present = 1;
retval = usb_register_dev(intf, &usblp_class);
^^^ export your interface to user space
if (retval) {
err("Not able to get a minor for this device.");
goto abort_intfdata;
}
usblp->minor = intf->minor;
^^^ associate the export with your data structure
in open:
int minor = iminor(inode);
struct usblp *usblp;
struct usb_interface *intf;
int retval;
if (minor < 0)
return -ENODEV;
down (&usblp_sem);
retval = -ENODEV;
intf = usb_find_interface(&usblp_driver, minor);
^^^ walk association user space -> interface
if (!intf) {
goto out;
}
usblp = usb_get_intfdata (intf);
^^^ walk interface -> data structure
file->private_data = usblp;
^^^ set association between task in user space and data structure
in read/write/... :
struct usblp *usblp = file->private_data;
^^^ follow association
There are other ways, too. Use the source.
HTH
Oliver
-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel