2012-08-24 3 views
-1

나는 Linkedlist 작업을 수행하는 데 사용되는 응용 프로그램 (사용자 공간)을 개발 중입니다.커널과 통신하는 응용 프로그램 개발

링크드리스트 작업을위한 기능을 가진 커널 모듈 (A)을 개발하고 싶습니다. 응용 프로그램 (사용자 공간)은 처리를위한 입력 값을 얻고 그 값은 kernelmodule (A)의 함수를 통해 처리되어야합니다.

  1. 커널 모듈에 값을 입력하는 방법.
  2. 커널 모듈 (A)의 결과를 내 사용자 공간 응용 프로그램에 보내는 방법은 무엇입니까?
  3. 응용 프로그램에서 커널 모듈 (A)의 함수 및 변수를 호출하는 방법.

내 애플리케이션은 C 프로그램 일 수 있습니까?

+2

왜? 이 숙제가 있니? – unwind

+0

예 [unwind] (http://stackoverflow.com/users/28169/unwind). 나는 이것에 처음이에요. 나는 주인에게 도움을 요청할 수 없다. 내가 작업을 완료해야합니다 –

답변

1

커널 드라이버는 커널 공간에 값을 보내기 위해 ioctl 함수를 사용하여 커널 공간에 사용자 공간 데이터 포인터를 보낼 수 있습니다. 커널 공간에서 copy_from_user()를 사용하여 사용자 데이터를 커널 공간에 복사합니다. 연결리스트 작업의 경우

는 언급 한 바와 같이 호출 할 함수를 식별 할 수있는 정보를 보낼 수있는 기능을 호출하기위한 커널의 ioctl 기능

의 반환 값으로 반환 될 수있다 성공 또는 실패가 될 수 있습니다 결과 첫 번째 단락에서

+0

안녕 [dragonyear] (http://stackoverflow.com/users/1622292/dragonyear) pls 이것을 보여주기 위해 몇 가지 매우 간단한 프로그램을 만듭니다. 나는 넷 & 나는 찾을 수 없다. Pls 날 도와. 나는 이것에 처음이에요. –

+0

ioctl()이 이것을 수행하는 유일한 방법 (또는 심지어 가장 좋은 방법)이 아니라는 것을 지적하는 것도 가치가 있습니다. 당신은 장치 노드를 읽거나 쓸 수 있습니다. (그리고 이것은 종종 가장 좋고 쉬운 방법입니다) netlink 소켓을 사용합니다. –