Documentation/usb/anchors.txt

來源:互聯網
上載者:User
Chinese translated version of Documentation/usb/anchors.txt

If you have any comment or update to the content, please contact the
original document maintainer directly.  However, if you have a problem
communicating in English you can also ask the Chinese maintainer for
help.  Contact the Chinese maintainer if this translation is outdated
or if there is a problem with the translation.

Chinese maintainer: keyingjing <342311642@qq.com>
---------------------------------------------------------------------
Documentation/usb/anchors.txt 的中文翻譯

如果想評論或更新本文的內容,請直接聯絡原文檔的維護者。如果你使用英文
交流有困難的話,也可以向中文版維護者求助。如果本翻譯更新不及時或者翻
譯存在問題,請聯絡中文版維護者。

中文版維護者: 柯瑩璟  <342311642@qq.com>
中文版翻譯者: 柯瑩璟  <342311642@qq.com>
中文版校譯者: 柯瑩璟  <342311642@qq.com>

What is anchor?
===============
A USB driver needs to support some callbacks requiring a driver to cease
all IO to an interface. To do so, a driver has to keep track of the URBs
it has submitted to know they've all completed or to call usb_kill_urb
for them. The anchor is a data structure takes care of keeping track of
URBs and provides methods to deal with multiple URBs.

錨是什麼。
==========
USB 驅動程式需要支援一些回呼函數,要求磁碟機停止所有的IO介面。要做到這一點,
磁碟機需要跟蹤URBs,它已提交知道URBs全部完成或為他們調用usb_kill_urb。錨是
一種資料結構,負責跟蹤URBs並提供多個UEBs的處理方法。

Allocation and Initialisation
=============================
There's no API to allocate an anchor. It is simply declared as struct
usb_anchor. init_usb_anchor() must be called to initialise the data structure.
 
分配和初始化
============
錨沒有被分配API。它簡單地聲明為usb_anchor結構,init_usb_anchor()必須調用初始化
的資料結構。

Deallocation
============
Once it has no more URBs associated with it, the anchor can be freed with
normal memory management operations.

釋放
====
一旦沒有更多的URBs與錨相關,錨被釋放與正常的記憶體管理操作。

Association and disassociation of URBs with anchors
==================================================
An association of URBs to an anchor is made by an explicit call to
usb_anchor_urb(). The association is maintained until an URB is finished by
(successful) completion. Thus disassociation is automatic. A function is provided
to forcibly finish (kill) all URBs associated with an anchor.Furthermore,
disassociation can be made with usb_unanchor_urb().

URBs與錨的關聯和分離
====================
錨與URBs的關聯是由usb_anchor_urb()顯式調用。該關聯會一直保持到一個URB成功完成。
因此分離是自動的。一個函數被提供用來強行完成(或殺死)所有的與URBs相關的錨。
此外,可以用usb_unanchor_urb()分離。

Operations on multitudes of URBs
================================
usb_kill_anchored_urbs()
------------------------
This function kills all URBs associated with an anchor. The URBs are called in
the reverse temporal order they were submitted.This way no data can be reordered.

URBs的眾多操作
==============
usb_kill_anchored_urbs()
------------------------
這個函數殺死所有URBs的相關錨。URBs被逆時間順序調用提交,通過這種方式,沒有資料可以
被重新排列。

usb_unlink_anchored_urbs()
--------------------------
This function unlinks all URBs associated with an anchor. The URBs are processed
in the reverse temporal order they were submitted.This is similar to
usb_kill_anchored_urbs(), but it will not sleep.Therefore no guarantee is made
that the URBs have been unlinked when the call returns. They may be unlinked
later but will be unlinked in finite time.

usb_unlink_anchored_urbs()
--------------------------
該函數解除所有URBs與錨的連結。URBs被逆時間順序提交處理,這與usb_kill_anchored_urbs()
類似,但是它不會休眠。因此,概無保證URBs在調用返回時會被解除連結。他們可能被解除連結,
但在有限的時間裡被解除連結。

usb_scuttle_anchored_urbs()
---------------------------
All URBs of an anchor are unanchored en masse.

usb_scuttle_anchored_urbs()
---------------------------
一個錨所有的URBs一齊被解開。

usb_wait_anchor_empty_timeout()
-------------------------------
This function waits for all URBs associated with an anchor to finish or a timeout,
whichever comes first. Its return value will tell you whether the timeout was reached.

usb_wait_anchor_empty_timeout()
-------------------------------
該函數等待所有URBs的相關錨完成或者逾時,以先到者為準。其傳回值反應是否逾時。

usb_anchor_empty()
------------------
Returns true if no URBs are associated with an anchor. Locking is the caller's
responsibility.

usb_anchor_empty()
------------------
如果URBs沒有相關錨函數返回True。鎖定是調用者的責任。

usb_get_from_anchor()
---------------------
Returns the oldest anchored URB of an anchor. The URB is unanchored and returned
with a reference. As you may mix URBs to several destinations in one anchor you
have no guarantee the chronologically first submitted URB is returned.

usb_get_from_anchor()
---------------------
返回最早錨定錨的URB。該URB不是固定的並返回一個引用。你可能在一個錨裡混合了多個URBs
目的地,你不能保證按時間順序最先提交的URBs被返回。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.