펑션콜??? 에 대해서 질문 드립니다.
글쓴이: mailbox20 / 작성시간: 월, 2006/01/02 - 10:11오전
ac97 디바이스 드라이버에서 아래와 같은 구조체가 있습니다.
================================================
struct ac97_codec {
:
:
void (*codec_write) (struct ac97_codec *codec, u8 reg, u16 val);
:
:
};
================================================
아래와 같이 선언된 상황에서
struct ac97_codec codec;
아래와 같이 사용될때 아래 코드의 의미를 잘 모르겠습니다.
codec->codec_write(codec, AC97_GPIO_STATUS, wm_gpio_stat);
codec_write(codec, AC97_GPIO_STATUS, wm_gpio_stat) 이 함수가 따로 선언되어 있는것도 아니고
단지 ac97_codec구조체 내에서 void (*codec_write) (struct ac97_codec *codec, u8 reg, u16 val); 이런식으로 선언되어 있는것 뿐인데 동작은 어떻게 되는건지... 잘 모르겠네요.
그리고 이런식으로 사용하는게 펑션콜이 맞긴 하죠?
아시는 분 ~ 좀 알려 주세요~
그럼 좋은 하루 되시길~
Forums:
그런 코드의 경우 실제로는 정확히 모르겠지만 일반적으로 만들어서 넣으라는
그런 코드의 경우 실제로는 정확히 모르겠지만 일반적으로 만들어서 넣으라는 의미일 겁니다.
----------------------------
May the F/OSS be with you..
function pointer에 관해 검색해보세요.
function pointer에 관해 검색해보세요.
struct ac97_codec {void (*codec_write)
struct ac97_codec {
void (*codec_write) (struct ac97_codec *codec, u8 reg, u16 val);
};
struct ac97_codec codec;
/* 여기부터 추가된 부분입니다. */
static customized_codec_write (struct ac97_codec *codec, u8 reg, u16 val)
{
/// Blahblah... DEBUG_MESG는 stdout출력을 내보내는 함수라고 가정
DEBUG_MESG("%s]\n",__FUCTION__);
}
codec =
{
customized_codec_write,
};
/* 여기까지, 'codec' 변수는 header파일에서 extern선언이 되어있거나 export symbol이 되어있다고 가정하고... */
codec->codec_write(codec, AC97_GPIO_STATUS, wm_gpio_stat);
(위와 같이 호출하면)
"customized_codec_write]"
stdout에 위와 같이 출력됩니다.
(맞나요? -_-a)
코덱은 다양하겠지요? 보통 이런 유형의 프로그램이 전형적인 프레임
코덱은 다양하겠지요?
보통 이런 유형의 프로그램이 전형적인 프레임워크의 유형입니다.
소위 기본 호출 유형과 최소 코덱만 구현이 되어 제공되는 경우겠습니다.
새로운 코덱의 추가를 위해서는 로마법에 따라서 짜라는 얘기가 되겠습니다.
답변 고맙습니다.이해가 ㅤㄷㅚㅆ습니다. ^^
답변 고맙습니다.
이해가 ㅤㄷㅚㅆ습니다. ^^
댓글 달기