複製鏈接
請複製以下鏈接發送給好友

buf

鎖定
BUF,是英文buffer的縮寫,意思是緩衝區,指在工廠中生產出來產品的臨時存放位置,在達到一定數量後會搬運到其它的地方。
外文名
buf
全    稱
buffer
結構成員
int b_flags;int b_error等
用    途
用來存放數據
釋    義
緩衝區
buf 結構
在驅動模塊中的解釋
以下 buf 結構成員對塊驅動程序很重要:
int b_flags; /* Buffer Status */
struct buf *av_forw; /* Driver work list link */
struct buf *av_back; /* Driver work list link */
; /* # of bsize_tb_bcountytes 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的縮寫,即緩衝區,意指內存中的一段存儲區域,用來存放數據。在高級語言中習慣用此作為變量名,以便後面引用。也可能是一條命令。