- 論壇徽章:
- 0
|
我還是有些不明白:
這個代碼最關(guān)鍵的是
mmap(0x0, 0x1000, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_ANONYMOUS, 0, 0)
MAP_FIXED的作用就是強(qiáng)行映射到指定的addr的位置。
MAP_ANONYMOUS將忽略 fd和offset參數(shù)。
疑問一:
既然沒有傳入fd,那么到底把哪個文件或者內(nèi)存映射到了地址0呢?
難道是內(nèi)核空間的內(nèi)存?
疑問二:
return sock->ops->sendpage(sock, page, offset, size, flags);
在內(nèi)核空間執(zhí)行時應(yīng)該看到的是進(jìn)程的全部4G空間。
這個跳轉(zhuǎn)到0地址執(zhí)行,這個0地址指的是進(jìn)程的虛擬地址0嗎?
如果是進(jìn)程空間的虛擬地址0,那么為什么不直接在進(jìn)程的虛擬地址0直接寫入jmp指令呢?
到底為什么要作mmap呢?
疑問三:
sock->ops->sendpage
到底在什么情況下是NULL呢?難道內(nèi)核的sendpage就不能用嗎?
還是只有
socket(PF_PPPOX, SOCK_DGRAM, 0)才會導(dǎo)致sendpage指針為NULL呢?
[ 本帖最后由 emmoblin 于 2009-8-21 00:00 編輯 ] |
|