結構
在驅動模組中的解釋以下 buf 結構成員對塊驅動程式很重要:
int b_flags; /* Buffer Status */
struct buf *av_forw; /* Driver work list link */
struct buf *av_back; /* Driver work list link */
size_t b_bcount; /* # of bytes to transfer */
union {
caddr_t b_addr; /* Buffer's virtual address */
} b_un;
daddr_t b_blkno; /* Block number on device */
diskaddr_t b_lblkno; /* Expanded block number on device */
size_t b_resid; /* # of bytes not transferred */
/* after error */
int b_error; /* Expanded error field */
void *b_private; /* “opaque” driver private area */
dev_t b_edev; /* expanded dev field */其中:
av_forw 和 av_back驅動程式可用以管理其使用的一組緩衝區的指針。有關 av_forw 和 av_back 指針的討論,請參見異步數據傳輸(塊驅動程式)。
b_bcount指定要由設備傳輸的位元組數。
b_un.b_addr數據緩衝區的核心虛擬地址。僅在進行 bp_mapin(9F) 調用後有效。
b_blkno設備上用於數據傳輸的起始 32 位邏輯塊編號,以 DEV_BSIZE(512 位元組)為單位。驅動程式應使用 b_blkno 或 b_lblkno,但不能同時使用兩者。
b_lblkno設備上用於數據傳輸的起始 64 位邏輯塊編號,以 DEV_BSIZE(512 位元組)為單位。驅動程式應使用 b_blkno 或 b_lblkno,但不能同時使用兩者。
b_resid由驅動程式設定的用於表明由於發生錯誤而未傳輸的位元組數。有關設定 b_resid 的示例,請參見示例 16–7。b_resid 成員會過載。此外,disksort(9F) 也會使用 b_resid。
b_error當發生傳輸錯誤時,由驅動程式設定為錯誤編號。b_error 應與 b_flags B_ERROR 位一起設定。有關錯誤值的詳細信息,請參見 Intro(9E) 手冊頁。驅動程式應使用 bioerror(9F),而不是直接設定 b_error。
b_flags表示 buf 結構的狀態屬性和傳輸屬性的標誌。如果設定了 B_READ,則 buf 結構指明從設備到記憶體的傳輸。否則,此結構指明從記憶體到設備的傳輸。如果在數據傳輸期間驅動程式遇到錯誤,則該驅動程式應設定 b_flags 成員中的 B_ERROR 欄位。此外,該驅動程式還應在 b_error 中提供一個更明確的錯誤值。驅動程式應使用 bioerror(9F),而不是設定 B_ERROR。
注意 – 驅動程式絕不能清除 b_flags。
b_private專供驅動程式存儲驅動程式專用數據。
b_edev包含用於傳輸的設備的設備編號。
在彙編及高級程式語言中的解釋在彙編中,buf通常是buffer的縮寫,即緩衝區,意指記憶體中的一段存儲區域,用來存放數據。在高級語言中習慣用此作為變數名,以便後面引用。也可能是一條命令。
遊戲中解釋
其實BUF應該為BUFF但是在國產的遊戲中很多人都喜歡用英文簡寫,而且打的不全,就把BUFF給打成BUF了。並且呢,很多人都不知道BUFF的意思是什麼,在美國遊戲中,BUFF的意思為增益狀態,在國內的遊戲中也有不少人喜歡用英語來表達,但是卻不知道是什麼意思,所以就把BUFF給打成BUF了。
BUF
BUF,是英文buffer的縮寫,意思是緩衝區,指在工廠中生產出來產品的臨時存放位置,在達到一定數量後會搬運到其它的地方。