usb_stor_exit (void)
1083 {
1084 US_DEBUGP ("usb_stor_exit () called/n ");
1085
1086/* Deregister the driver
1087 * This will cause disconnect () to be called for each
1088 * attached unit
1089 */
1090 US_DEBUGP ("-- calling usb_deregister ()/n ");
1091 usb_deregister ( usb_storage_driver );
1092
1093/* Don't return until all of our control and scanning threads
1094 * have exited. Since each thread signals threads_gone as its
1095 * last act, we have to call wait_for_completion the right number
use another pointer to temporarily replace altsetting. Next we will use its members desc and endpoint.
Looking back at structusb_host_interface, we can see its two members: struct usb_interface_descriptor desc and struct usb_host_endpoint * endpoint. Among them, desc is needless to say, it is the interface descriptor of this interface, and the endpoint pointer records several endpoints, they are stored in the form of an array, and the endpoint points to the array header. These are all set duri
We followed storage_probe () almost completely, and it seems that everything is about to end, but do you think you haven't understood how the device works so far? USB flash drives are not only USB devices but also "disks". They also need to comply with the USB Mass Storage protocol and Transparent SCSI specifications. From the driver's perspective, it is similar
Objective: To study USB in depth and take notes here. Welcome to the discussion.
[Linux 3.2] [Driver/USB/CORE/hub. C]
Function: usb_hub_init
int usb_hub_init(void){if (usb_register(hub_driver)
Usb_hub_init mainly implements two functions: one is to register the hub driver, and the other is to start a kernel thread named khubd (this thread can be seen through P
threads_gone as its
1095* Last act, we have to call wait_for_completion the rightNumber
1096* Of times.
1097*/
1098While(Atomic_read ( total_threads)> 0 ){
1099Wait_for_completion ( threads_gone );
1100Atomic_dec ( total_threads );
1101}
1102
1103Usb_usual_clear_present (usb_us_type_stor );
1104}
1105
1106 module_init (usb_stor_init );
1107 module_exit (usb_stor_exit );
In fact,Module_init/module_exitIt's just a macro. Generally, a module writer will give his own initialization function and log
Linux-USB Gadget
OverviewThe Linux-USB Gadget driver framework (hereinafter referred to as gadget) provides software functions for devices defined by the USB protocol.Compared with the Linux U
Let's continue with the previous section. Fill_inquiry_response (), which is from drivers/USB/storage/USB. C.
266 void fill_inquiry_response (struct us_data * us, unsigned char * data,
267 unsigned int data_len)
268 {
269 If (data_len
270 return;
271
272 if (data [0] 0x20) {/* USB device currently not connected. Return
273 peripheral qualifier 001b (".
Let's continue with the previous section. Fill_inquiry_response (), which is from drivers/usb/storage/usb. c.
266 void fill_inquiry_response (struct us_data * us, unsigned char * data,
267 unsigned int data_len)
268 {
269 if (data_len
270 return;
271
272 if (data [0] 0x20) {/* USB device currently not connected. Return
273 peripheral qualifier 001b ("..
that Genesys Logic's products had this problem, and later we found that more products had the same problem. Therefore, the flag US_FL_GO_SLOW is used. If you are interested in looking at the early Linux Kernel, you will find that there was actually no such flag. At that time, a USB_VENDOR_ID_GENESYS is defined, directly compare whether this product is from Genesys Logic. If yes, consider this latency. Otherwise, you will not need to use it.Line 3, tr
Come out and try again later. Basically, each directory in the Linux kernel has a Makefile. Makefile and Kconfig are just like a map of a city. a map shows us a city, while Makefile and Kconfig let us know what is under this directory...
"Come out and try again sooner or later ."
Basically, there is a Makefile under each directory in the Linux kernel. Makefile and Kconfig are like a map of a city. a map lea
drivers/usb/storage/protocol. h:
51/* struct scsi_cmnd transfer buffer accessutilities */
52 enum xfer_buf_dir {TO_XFER_BUF, FROM_XFER_BUF };
This parameter is actually a simple enumerated data type, and its meaning is also very simple: one indicates copying to the server load balancer> request_buffer, TO_XFER_BUF; the other indicates copying from the server load balancer> request_buffer, FROM_XFER_BUF. (Digression: XFER refers to TRANSFER, which
*/
154 void * extra;/* any extradata */
155 extra_data_destructor extra_destructor;/* extra data destructor */
156 # ifdef config_pm
157 pm_hook suspend_resume_hook;
158 # endif
159 };
It is not difficult to find that every important data structure in the Linux kernel is complex. In short, this troublesome data structure is available to every device. In other words, we apply for a us_data for each device, because the edge in this structure wil
In 1991, one introduced the concept of pipelines in Linux and used pipelines in many places, such as file systems and device drivers. So we can see that there are various pipelines in Linux. But the same thing is that all pipelines are used to transmit things, but some pipelines transmit real material while some pipelines transmit data.
The pipe we see in the USB
"Come out and try again sooner or later ."
Basically, LinuxEach directory in the kernel has a makefile. MakefileAnd kconfigJust like a map of a city, a map leads us to know a city, while makefileAnd kconfigSo that we can understand the structure under this directory. Drivers/USB/storage/Makefile under the DirectoryThe content is as follows:
Lfg1:/usr/src/linux-2.6.22/Drivers/
Objective: To study USB in depth and take notes here. Welcome to the discussion.
[Linux 3.2] [Driver/USB/CORE/devio. C]
Definition: usbfs_driver
struct usb_driver usbfs_driver = {.name ="usbfs",.probe =driver_probe,.disconnect =driver_disconnect,.suspend =driver_suspend,.resume =driver_resume,};
[Linux 3.2] [INCLUDE/
USB device has a configuration, which we mentioned earlier, and there is another setting (setting ). A little strange, aren't these two words the same thing? Let's take our most familiar mobile phone for example. If you don't talk about the configuration, you just need to set it. Various configurations of a mobile phone may have been determined. For example, the vibration or ringtones are determined, and various functions are determined. However, the
From: http://hyt19860117.love.blog.163.com/blog/static/127773729201042435553852/
With the improvement of people's living standards, more and more USB devices are used, but Linux still does not fully Plug and Play in hardware configuration. how to configure and use Linux is alsoThis article is intended to help you understand how to develop a
This story uses kernel code 2.6.22. In the Linux kernel code directory, all the Code related to the device driver is under the drivers/directory. Using the ls command in this directory, you can see many subdirectories:
Lfg1:/usr/src/linux-2.6.22/drivers # ls
Kconfig acpi atm block char cpufreq dma fc4 hid ide
Input leds md mfd mtd oprofile pci ps3 s390 serial spi
Us
If I can't accompany you to the end
Do you regret that we were holding hands
If I hadn't met you
Now, I
Where to stay
All love is an adventure.
That would be willingly.
Waiting for all the suspense in our lives
My passionately devoted lover.
She's my lover.
The love she gave me was like
The morning with the dew
How I want to give her my true
My dearly Beloved.
I want to be lonely for her
Like the night is deep
This chapte
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.