Chức năng copy_from_user
có thể không thành công vì nhiều lý do (thường do địa chỉ không hợp lệ), chỉ sao chép một phần dữ liệu được yêu cầu hoặc thậm chí không có dữ liệu nào.
Có một quy ước (không hoàn toàn theo sau) các hàm trả về 0 để biểu thị thành công. Trong trường hợp của copy_from_user
, xác định kết quả là số lượng byte không sao chép cho phép nó tuân theo quy ước này với một quy tắc khá đơn giản.
Trực quan, có thể có ý nghĩa hơn khi trả lại số byte thực sự sao chép, nhưng cách nó được xác định cho phép mã sử dụng nó để kiểm tra lỗi theo cách tương tự như đối với các hàm khác trả về 0 sự thành công. (Và trong nhiều trường hợp, nó không quan trọng bao nhiêu byte nó thất bại trong việc sao chép; bất kỳ khác không kết quả chỉ là một lỗi.)
Nếu nó trả về một khác không giá trị đó là ít hơn count
, cho thấy một bản sao một phần, có thể là có nghĩa là bộ đệm bộ nhớ không gian người dùng bắt đầu trong không gian địa chỉ của người dùng nhưng mở rộng ra ngoài phần cuối của nó.
Nguồn
2014-05-02 17:51:35
OK. Cảm ơn. – user1443721