리눅스 커널 모듈에서 User-Space로 초당 몇 메가 바이트의 데이터를 전송해야하며, 모듈에서 어떤 메시지도 놓치지 않기를 바랍니다. 나는 그것을 읽었다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?커널에서 사용자 공간으로 큰 데이터를 전송하는 가장 좋은 방법
Named-Pipes, Proc-File 및 Block-Device 그러나 나는 선택할 수있는 것이 무엇인지, 어느 것이 내가 Kernel-Newbie 이래로 최상의 성능을 약속하는지 잘 모르겠습니다.
현재 나는 메시지를 저장하기 위해 커널 모듈에서 링 버퍼 (spinlocks와 함께)를 사용하고 Proc-File이 읽히고 있으면 나는 Ring-Buffer에서 Proc-File로 데이터를 저장한다. 사용자 측에 cat /proc/procfile
을 반복적으로 실행하고 출력을 보여주는 프로그램이 있습니다. 이 솔루션의 문제는 대신 출력
메시지 1 메시지 2 메시지 3
을 받고, 나는이 (때로는 수천 번씩 몇 가지 메시지)를 참조한다는 것입니다
메시지 1 메신저 3