Giả sử tôi đã đăng ký giao diện netlink chung sử dụng genl_register_family_with_ops
với nhiều cuộc gọi lại.Linux Kernel Generic Netlink - Có đồng thời không?
Tôi không thấy bất kỳ cảnh báo nào về nó và tôi cho rằng các cuộc gọi lại được gọi là serially nhưng không có thông tin về cách gọi lại được gọi là không.
Có thể nhiều cuộc gọi lại được gọi đồng thời trên cùng giao diện netlink chung mà tôi đã đăng ký không? Tôi có cần bất kỳ sự đồng bộ nào giữa các cuộc gọi lại không?
Để làm cho câu hỏi đơn giản hơn:
Một cuộc gọi lại liên kết mạng có thể được đặt trước hoặc đồng thời chạy trong hai lõi không?
Gọi lại được gọi khi xảy ra sự kiện. Nếu một sự kiện khác xảy ra trước khi cuộc gọi kết thúc, sau đó nó sẽ nhận được một cuộc gọi chồng chéo. – stark
@stark Tôi đặc biệt yêu cầu nếu tôi có thể nhận được hai sự kiện trên cùng một đăng ký gia đình netlink có thể làm cho các cuộc gọi lại trùng lặp. Chỉ có một đăng ký với nhiều cuộc gọi lại. Các cuộc gọi lại của Netlink sẽ được sửa đổi các cấu trúc giống nhau và các cấu trúc sẽ chỉ được sửa đổi/truy cập bằng các cuộc gọi lại liên kết mạng. – Etherealone
@Etherealone Tôi nghi ngờ câu trả lời là đây là cấu hình, nhưng tắt theo mặc định. Trong bản sao của các nguồn kernel 3.11, 'struct genl_family' chứa một' bool parallel_ops'. Trong 'linux-3.11.10-21/net/netlink/genetlink.c: 674' hoặc nearabouts, trong' genl_rcv_msg() ', nếu cờ đó không được thiết lập, thì một mutex toàn cầu bị khóa, yêu cầu được xử lý và mutex toàn cầu được mở khóa. Nếu nó được thiết lập thì khóa này không xảy ra. –