드라이버 내 read함수의 user영역 데이타의 배열과 포인터로의
글쓴이: kingchobo / 작성시간: 일, 2005/09/25 - 7:29오후
드라이버에서 read부분을 작성하고 있는데 copy_to_user에서 읽은 버퍼 메모리를 user영역으로 제대로 올려보내지를 않습니다.
그래서 이것 저것 해보는 가운데.
printk("[%02X] ", *(unsigned char*)dev->read_buffer+j);
printk("[%02X] ", dev->read_buffer[j]);
이 두 코드에서 차이가 남을 보았습니다.
분명 배열과 포인터의 차이인듯 한데
잘 모르겠습니다.
포인터로 접근하면 데이타가 있음을 확인할 수 있는데
배열로 접근하면 데이타가 없네요 ;;
포인터에 대한 개념이 흔들리나 봅니다.
내부적으로 드라이버에서 어떤 식으로 읽은 데이타를 가지고 있는지 궁금합니다.
그리고 저 두 코드의 차이가 뭔지도 궁금해요.
고수님들 부탁드립니다~
Forums:
간단히 하기 위해 (unsigned char*) 캐스팅을 제외하고 얘기하
간단히 하기 위해 (unsigned char*) 캐스팅을 제외하고 얘기하면
*dev->read_buffer+j 는 dev->read_buffer[0] + j 와 같지요.
dev->read_buffer[j] 는 *(dev->read_buffer + j) 와 같고요.
답변 감사합니다.
감사합니다. ^^
댓글 달기