Làm cách nào để có được PID của quy trình người dùng kích hoạt quy trình file_operation.read
của hạt nhân của tôi (tức là quá trình đang đọc /dev/mydev
)?Nhận quy trình người dùng pid khi viết Mô-đun hạt nhân Linux
Trả lời
Khi chức năng đọc của bạn đang thực thi, nó làm như vậy trong ngữ cảnh của quá trình đã phát ra cuộc gọi hệ thống. Do đó, bạn có thể sử dụng current
, tức là current->pid
.
Những ngày này, chúng tôi có một số chức năng trợ giúp được xác định trong lịch biểu.h. Trong trường hợp pid, bạn có thể sử dụng:
pid = task_pid_nr(current);
để nhận được nhiệm vụ hiện tại.
đây là nhận xét được lấy từ include/linux/sched.h
từ v3.8.
sự giúp đỡ để có được PID khác nhau của công việc khi họ được nhìn thấy từ không gian tên khác nhau
- task_xid_nr(): id toàn cầu, ví dụ: id nhìn thấy từ không gian tên init;
- task_xid_vnr(): id ảo, tức là id được xem từ không gian tên pid hiện tại.
- task_xid_nr_ns(): id được nhìn thấy từ ns được chỉ định;
- set_task_vxid(): gán một id ảo cho một tác vụ;
xem thêm pid_nr() vv trong bao gồm/linux/pid.h
Trên một kernel 2.6.39 tay xây dựng, nếu current->pid
không hoạt động sau đó nó có thể được thực hiện bằng cách:
pid_nr(get_task_pid(current, PIDTYPE_PID))
Có thể thay thế PIDTYPE_PID
bằng PIDTYPE_PGID
hoặc PIDTYPE_SID
. Nguồn tiêu đề là include/linux/pid.h
khi Yasushi chỉ ra.
Cách tiếp cận nào hoạt động phụ thuộc vào tệp tiêu đề mà mã sử dụng.
- 1. Hạt nhân Linux - Nhận khối bộ nhớ viết cuối cùng
- 2. Trạng thái ngăn xếp hạt nhân của quá trình Linux khi tạo quy trình là gì?
- 3. Linux mutexes hạt nhân
- 4. Khi nào tôi nên viết một mô-đun hạt nhân Linux?
- 5. Lập trình mô-đun hạt nhân Linux: makefile
- 6. Nhập mã vùng người dùng vào không gian hạt nhân
- 7. ngăn xếp hạt nhân cho quá trình linux
- 8. Hạt nhân Linux Vô hiệu hóa mục nhập TLB
- 9. Từ hạt nhân đến không gian người dùng (DMA)
- 10. Lập trình trình điều khiển thiết bị hạt nhân Linux
- 11. Người gọi chức năng trong hạt nhân Linux
- 12. Viết nhiều hạt nhân hoặc một hạt nhân
- 13. Làm thế nào để truy cập bộ nhớ không gian người dùng từ hạt nhân Linux?
- 14. Làm thế nào để mmap một bộ đệm hạt nhân Linux để không gian người dùng?
- 15. Tắt (linux) linux từ hạt nhân-không gian
- 16. Android: Cách nhận nhật ký hạt nhân sau khi hoảng loạn hạt nhân?
- 17. Kiểu mã hóa hạt nhân Linux
- 18. Nhận apache linux người dùng từ php
- 19. Truyền DMA trong trình điều khiển hạt nhân Linux PCIE
- 20. Mối quan hệ giữa hạt nhân và chuỗi người dùng
- 21. Chức năng aio hạt nhân linux
- 22. Biên dịch Lỗi hạt nhân Linux xt_CONNMARK.h
- 23. Cách nhận kích thước trang hạt nhân linux theo lập trình
- 24. Không thể ghi vào bộ nhớ hạt nhân qua mô-đun hạt nhân Linux (Ubuntu)
- 25. Tổ chức tiêu đề hạt nhân Linux
- 26. Không gian người dùng so với trình điều khiển không gian hạt nhân
- 27. Java: Nhận một quy trình được đưa ra một pid
- 28. Dải nguồn hạt nhân Linux theo .config
- 29. về typecheck trong hạt nhân linux
- 30. distro cho phát triển hạt nhân linux
hiện tại là gì? đọc không nhận được hiện tại làm đối số ... ssize_t (* đọc) (struct file *, char __user *, size_t, loff_t *); – 0x90
@ 0x90 Đó là một macro. – cnicutar
http://kernelnewbies.org/FAQ/current, phải không? – 0x90