드라이버 내 read함수의 user영역 데이타의 배열과 포인터로의

kingchobo의 이미지

드라이버에서 read부분을 작성하고 있는데 copy_to_user에서 읽은 버퍼 메모리를 user영역으로 제대로 올려보내지를 않습니다.

그래서 이것 저것 해보는 가운데.

printk("[%02X] ", *(unsigned char*)dev->read_buffer+j); printk("[%02X] ", dev->read_buffer[j]);

이 두 코드에서 차이가 남을 보았습니다.
분명 배열과 포인터의 차이인듯 한데
잘 모르겠습니다.

포인터로 접근하면 데이타가 있음을 확인할 수 있는데
배열로 접근하면 데이타가 없네요 ;;

포인터에 대한 개념이 흔들리나 봅니다.

내부적으로 드라이버에서 어떤 식으로 읽은 데이타를 가지고 있는지 궁금합니다.

그리고 저 두 코드의 차이가 뭔지도 궁금해요.

고수님들 부탁드립니다~

doldori의 이미지

간단히 하기 위해 (unsigned char*) 캐스팅을 제외하고 얘기하면
*dev->read_buffer+j 는 dev->read_buffer[0] + j 와 같지요.
dev->read_buffer[j] 는 *(dev->read_buffer + j) 와 같고요.

kingchobo의 이미지

감사합니다. ^^