2014-12-03 2 views
2

기본적으로 나는 자기 자신의 세마포어를 리눅스 커널 안에 구현하고 그것을 사용자 프로그램에서 사용할 수 있기를 원한다.리눅스 커널에 커스텀 세마포어를 추가하는 방법은?

커널 코드를 구현하는 과정에서 약간의 진전을 보였지만 사용자 프로그램에서 사용할 수있는 세마포어 유형 및 기능을 만드는 방법을 알지 못합니다.

사용자 프로그램 내 코드가 될 것으로 커널을 사용하여 리눅스 컴파일 있도록

이 어떤 방법이 있나요 (... 기다려 신호) 내 세마포어 유형과 기능에 액세스 할 필요가 헤더 파일을 포함 시켜서 내 세마포어를 사용할 수 있습니까?

나는 리눅스 커널에 관해서는 전문가가 아니기 때문에 명백한 실수를 저지르는 것이 자유 롭다. 감사합니다. 사용중인 커널 버전은 2.6.32입니다.

답변

2

사용자 공간 프로그램을 위해 세마포어를 구현하는 방법에 대해 사용자 공간 라이브러리를 살펴 보는 것이 좋습니다.

세마포어는 커널 2.6.16 이전 커널에서만 사용할 수 있습니다. 뮤텍스는 커널 버전 이후에 나타납니다. 이전 구현에서만 세마포를 사용했습니다. 더 새로운 코드는 프로세스 컨텍스트에서만 사용되는 뮤텍스를 사용해야합니다. 다음 헤더, 구조체 및 API를 살펴볼 수 있습니다.

#include <linux/mutex.h> 
struct mutex 
mutex_{lock,trylock,unlock,lock_interruptable}() 

또한 구현을 위해 semaphore.c을 볼 수도 있습니다.

+0

감사합니다. 내 semaphore에 대한 지침으로 semaphore.c를 사용했습니다. posix semaphore.h 파일을 조사해 보았습니다. 너무 복잡했기 때문에 다시 시도 할 수있었습니다. – AmV

관련 문제