device driver에서 전역변수 사용
글쓴이: 읏짜 / 작성시간: 수, 2022/02/09 - 4:25오후
안녕하세요..
multi thread(host)환경에서 device driver내에서 계속 유지해야 하는 정보라서 전역변수로 설정하게 되면
multi thread 환경에서 전역변수의 값이 유지가 되나요?
driver코드 내에 전역변수로 "int a=10;"이렇게 a라는 전역변수가 10이라는 값으로 초기화 되어있고, host program에서 어떤 쓰레드가 device driver를 사용해서 a의 값이 1로 변경되었다면, 두 번째 쓰레드에서 driver를 사용할 때 a도 1인 상태인가요? 아니면 다시 a=10인 상태가 되는건가요?
Forums:
device driver 에서의 메모리 공간은
device driver 에서의 메모리 공간은 kernel space 로, 모든 linux process(thread) 와 공유합니다.
제 생각에는
두 번째 쓰레드에서는 1이 읽혀질 것 같네요.
일단 Kernel space인 device driver에서 copy_to_user() 와 같은 함수로 user space로 값을 읽어오고, copy_from_user()함수로 쓰레드에서 변경된 값을 다시 driver코드에 써 넣는다는 것을 생각했구요
이렇게 할 때, mutex 등을 이용해서 thread-safe하게 코드를 만들어야 할지 않을까 생각해봤어요
댓글 달기