Lưu ý
Mục đích của file này là để độc giả tiếng Việt có thể đọc và hiểu tài liệu nhân kernel dễ dàng hơn, không phải để tạo ra một nhánh tài liệu riêng. Nếu bạn có bất kỳ nhận xét hoặc cập nhật nào cho file này, vui lòng thử cập nhật file tiếng Anh gốc trước. Nếu bạn thấy có sự khác biệt giữa bản dịch và bản gốc, hoặc có vấn đề về bản dịch, vui lòng gửi góp ý hoặc patch cho người dịch của file này, hoặc nhờ người bảo trì và người review tài liệu tiếng Việt giúp đỡ.
- Bản gốc:
- Người dịch:
Google Translate (machine translation)
- Phiên bản gốc:
8541d8f725c6
Cảnh báo
Tài liệu này được dịch tự động bằng máy và chưa được review bởi người dịch. Nội dung có thể không chính xác hoặc khó hiểu ở một số chỗ. Khi có sự khác biệt với bản gốc, bản gốc luôn là chuẩn. Bản dịch chất lượng cao (được review) được đặt trong thư mục vi_VN/.
Bản đồ BPF¶
‘Bản đồ’ BPF cung cấp bộ lưu trữ chung thuộc nhiều loại khác nhau để chia sẻ dữ liệu giữa kernel và không gian người dùng. Có một số loại lưu trữ có sẵn, bao gồm hàm băm, mảng, bộ lọc nở và cây cơ số. Một số loại bản đồ tồn tại hỗ trợ những người trợ giúp BPF cụ thể thực hiện các hành động dựa trên nội dung bản đồ. các bản đồ được truy cập từ các chương trình BPF thông qua trình trợ giúp BPF được ghi lại trong ZZ0000ZZ cho ZZ0001ZZ.
Bản đồ BPF được truy cập từ không gian người dùng thông qua tòa nhà ZZ0000ZZ, cung cấp các lệnh tạo bản đồ, tra cứu phần tử, cập nhật phần tử và xóa phần tử. Thông tin chi tiết hơn về tòa nhà chọc trời BPF có sẵn trong ZZ0001ZZ và trong ZZ0002ZZ cho ZZ0003ZZ.
Các loại bản đồ¶
- BPF_MAP_TYPE_ARRAY và BPF_MAP_TYPE_PERCPU_ARRAY
- BPF_MAP_TYPE_BLOOM_FILTER
- BPF_MAP_TYPE_CGROUP_STORAGE
- BPF_MAP_TYPE_CGRP_STORAGE
- BPF_MAP_TYPE_CPUMAP
- BPF_MAP_TYPE_DEVMAP và BPF_MAP_TYPE_DEVMAP_HASH
- BPF_MAP_TYPE_HASH, với các biến thể PERCPU và LRU
- Cờ ZZ0000ZZ ZZ0001ZZ
- BPF_MAP_TYPE_LPM_TRIE
- BPF_MAP_TYPE_ARRAY_OF_MAPS và BPF_MAP_TYPE_HASH_OF_MAPS
- BPF_MAP_TYPE_QUEUE và BPF_MAP_TYPE_STACK
- BPF_MAP_TYPE_SK_STORAGE
- BPF_MAP_TYPE_SOCKMAP và BPF_MAP_TYPE_SOCKHASH
- BPF_MAP_TYPE_XSKMAP
Ghi chú sử dụng¶
-
int bpf(int command, union bpf_attr *attr, u32 size)
Sử dụng lệnh gọi hệ thống ZZ0000ZZ để thực hiện thao tác được chỉ định bởi ZZ0001ZZ. Hoạt động lấy các tham số được cung cấp trong ZZ0002ZZ. ZZ0003ZZ đối số là kích thước của ZZ0004ZZ trong ZZ0005ZZ.
ZZ0000ZZ
Tạo bản đồ với loại và thuộc tính mong muốn trong ZZ0000ZZ:
int fd;
union bpf_attr attr = {
.map_type = BPF_MAP_TYPE_ARRAY; /* mandatory */
.key_size = sizeof(__u32); /* mandatory */
.value_size = sizeof(__u32); /* mandatory */
.max_entries = 256; /* mandatory */
.map_flags = BPF_F_MMAPABLE;
.map_name = "example_array";
};
fd = bpf(BPF_MAP_CREATE, &attr, sizeof(attr));
Trả về bộ mô tả tệp quy trình cục bộ khi thành công hoặc lỗi âm trong trường hợp thất bại. Bản đồ có thể bị xóa bằng cách gọi ZZ0000ZZ. Bản đồ được giữ bởi mở bộ mô tả tệp sẽ tự động bị xóa khi quá trình thoát.
Lưu ý
Valid characters for map_name are A-Z, a-z, 0-9,
'_' and '.'.
ZZ0000ZZ
Tra cứu khóa trong bản đồ nhất định bằng ZZ0000ZZ, ZZ0001ZZ, ZZ0002ZZ. Trả về 0 và lưu trữ phần tử được tìm thấy vào ZZ0003ZZ trên thành công hoặc lỗi tiêu cực khi thất bại.
ZZ0000ZZ
Tạo hoặc cập nhật cặp khóa/giá trị trong bản đồ nhất định bằng ZZ0000ZZ, ZZ0001ZZ, ZZ0002ZZ. Trả về 0 nếu thành công hoặc trả về lỗi âm nếu thất bại.
ZZ0000ZZ
Tìm và xóa phần tử theo khóa trong bản đồ nhất định bằng ZZ0000ZZ, ZZ0001ZZ. Trả về 0 nếu thành công hoặc trả về lỗi âm nếu thất bại.