le32_to_cpu 매크로함수, typedef 등등
질문 1.
/* Definitions Related to Chip Address and CPU Physical Address *****************************
* cpu_phy_add: CPU Physical Address , it uses 32 bit data per address
* chip_add : Chip Address, it uses double word(64) bit data per address
*/
#define chip_add(cpu_phy_add) (cpu_phy_add-0x400)/8
#define cpu_phy_add(chip_add) (8*chip_add)+0x400
이게 사용가능 한가요?? Chip_add가 cpu_phy_add를 사용하면 cpu_phy_add()함수가 호출 되는지.. 위에 예에서 처럼 매크로 인자가 없다면 인자가 없는 위의 방식은 어떻게 되는건지요? 너무 쉬운거라면 죄송합니다.ㅇ..
질문 2.
Typedef void (*pci_complete_t)(struct tem*); 함수원형이 있는데,
다음과 같이 선언하고요
pci_complete_t complete;
다음과 같은 호출이 가능한지요?
complete(u_tem);
이게 가능한지…
그리고 저런 함수 포인터는 구현이 안되었는데
위에 예에서처럼 함수를 call하면 어떻게 되는지..? 파일 operator 인가용?
그렇다고 포인터이기 때문에 다른 함수의 주소값을 가지는 부분도 없습니다..??
어떤 이유인지 알려주세용?
질문 3 ,.
Pci_hcd 라는 구조체가 있는데(예를 들어) 그 구조체의 포인터 변수를 선언하였고 임의의 변수 Unsigned long arg 변수를 만들어
그 구조체 포인터에 이 변수를 할당하는 데 캐스팅 연산자를 사용하여 할당하고 있습니다.
밑에 예와 같다면 어떤값이 나오고 어떻게 되는지 ..가능한가요??
Ex>Pci_hcd *hcd = (Pci_hcd *) arg;
위의 예가 잘못 되었다면 밑에 예는 가능한지요?
Pci_hcd *hcd = (Pci_hcd *) &arg;
질문 4
le32_to_cpu(a);
위와 같은 함수가 구현되어 있는데,
이 함수를 보면 다음과 같습니다.
#define le32_to_cpu __le32_to_cpu
위의 디파인 문은 다음과 연결됩니다.
#define __le32_to_cpu(x) __swab32((x))
마찬가지로 다음과 연결됩니다.
# define __swab32(x) (__builtin_constant_p((__u32)(x)) ? ___swab32((x)) : __fswab32((x)))
이 함수의 역할은 무엇인지요?
아래 예문도 비슷한 함수입니다.
댓글 달기