[완료] 드라이버 모듈 빌드시 Unknown symbol BIT_MASK ?

이병혁의 이미지

Stowaway keyboard driver (시리얼 키보드 드라이버)를 사용해서, IR 드라이버로 만들고 있습니다.
처음엔 포기할까 생각도 하긴 했는데, 다행히도
bushi님의 도움으로 IR의 키코드가 콘솔에 찍히는걸 확인했습니다.
이제 키보드쪽으로만 전달이 된다면, OK일것 같습니다.
인터럽트도 잘 뜨고, 인터럽트코드에 프로토콜도 어느정도는 맞추었구요.

그런데, 모듈로 빼서 kbd driver 를 build했는데요.
build할때 아래와 같은 에러 메세지가 나오네요.

● 에러내용
kbd.c: In function 'skbd_connect':
kbd.c:185: warning: implicit declaration of function 'BIT_MASK'
WARNING: "BIT_MASK" [/home/driver/kbd/kbd.ko] undefined!

실제로 185번줄 코드에 가보면, 아래와같습니다.

● kbd driver
input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP);

여기서, BIT_MASK매크로인지, 함수인지가 없어서 그런것 같은데요.
모듈을 build하고 insmod 하면, 아래처럼 언노운 심볼에러가 나옵니다.

● 실행
# insmod kbd.ko
kbd: Unknown symbol BIT_MASK
insmod: cannot insert 'kbd.ko': unknown symbol in module
#

이럴땐 어떻게 해줘야 하는지요?
BIT_MASK빼고 BUILD하면 모듈은 잘 올라갑니다.

모듈에 Kernel에 있는 BIT_MASK를 찾아서 넣어줘야 하는것인지,
EXPORT_SYSBOL을 해주어야 하는것인지...
위의 방법으로 해보긴 했는데,, 잘 안되서요...
아니면, 어떤 다른 방법이 있는지...

답변좀 부탁드리겠습니다.

행복한 하루 되세요~

이병혁의 이미지

제가 갖고 있는 커널헤더엔 없고, 상기 드라이버가 있던 커널 코드에 포함되 있군요.
코드는 다음과 같습니다.

linux/include/linux/bitops.h 파일에
#define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))

좀더 검색해봤더라면...질문 안했을텐데...
결국 드라이버 코드에 BIT_MASK 가 포함 안되서 그런거 였네요...
포함되어 있는데 드라이버에서 포함 못시킨게 아니고..
이거 찾는데 1루걸린 1인 -_-;;;;

공부하자!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.