2013-08-05 26 views
5

như hầu hết các lập trình viên C biết libc cung cấp cho một chức năng không di động để điều chỉnh ái lực cpu chủ đề (pthread_attr_setaffinity_np()). Tuy nhiên, những gì tôi không thực sự biết là làm thế nào điều này có thể được thực hiện khi thực hiện một mô-đun hạt nhân. Bất kỳ câu trả lời nào đề cập đến hoặc chuyển hướng đến một số ví dụ thực tế sẽ khá hữu ích.đặt ái lực chủ đề trong mô-đun hạt nhân linux

+0

Bạn có thể giải thích chi tiết hơn: bạn có muốn thay đổi sở thích của một số chuỗi hiện có hoặc tạo ra một chuỗi mới có ái lực nhất định từ mô-đun hạt nhân của bạn không? Bạn đang cố gắng làm gì theo cách này? Thông tin này có thể giúp các chuyên gia ở đây cung cấp cho bạn câu trả lời. – Eugene

+0

Xin lỗi vì câu trả lời bị trì hoãn. Những gì tôi muốn làm là thiết lập hai luồng trên các lõi khác nhau, để tôi có thể thực hiện một số phép đo về vấn đề kết hợp bộ nhớ cache. Để thực hiện các phép đo của tôi chính xác, tôi cần phải thêm lắp ráp nội tuyến nhưng tôi cũng phải vô hiệu hóa việc sử dụng. Để làm như vậy, tôi phải có một mô-đun hạt nhân Linux cho nhiệm vụ. Tuy nhiên, đối với một mô-đun như vậy thư viện libc là vô hình và vì lý do này tôi muốn xem chức năng nào thay đổi ái lực của THREAD, không có quy trình trong LKM. Tôi hy vọng điều này là rõ ràng ngay bây giờ ... – user1533288

Trả lời

3

Bạn nên sử dụng kthreads, viết tắt của chủ đề hạt nhân. Để tạo như vậy trên cpu được chỉ định, bạn nên gọi kthread_create_on_cpu(). Nó được định nghĩa trong include/linux/kthread.h. Chủ đề sẽ được tạo trong trạng thái ngủ, vì vậy bạn nên gọi số wake_up_process() trên đó. Đó là tất cả.

Bạn có thể lấy một ví dụ về cách sử dụng kthreads trong câu trả lời của tôi trong câu hỏi this.

0

Bạn có thể sử dụng hàm kthread_bind().