作者kkdlin (kkdlin)
看板C_and_CPP
標題[問題] pointer alignment
時間Fri Apr 3 22:13:18 2009
最近在看driver相關的書籍
看到alignment這邊 一直有個問題想不通
想請教一下各位
書裡面提到一般在將pointer做alignment的時候
是用下面的公式
[pointer + (page_size - 1)] & ~(page_size - 1)
後面的& 的動作可以理解 就是要把後面的位數清成0
變成page size的倍數
可是前面的加(page_size - 1)的動作一直想不懂?
直接將pointer & ~(page_size - 1)不是可以達到一樣的效果嗎?
想了很久的說..^^"
Thanks in advance
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.231.73
※ 編輯: kkdlin 來自: 114.32.231.73 (04/03 22:13)
推 cole945:你在講的那個是.. 比如說,page 4K, 4.5K取4K, 8.7K取8K 04/03 22:26
→ cole945:可是你說的那個公式是 4.5K取8K, 8.4K取12K 04/03 22:27
→ cole945:當然,如果是恰4K的位數,那就會原本的值.. 04/03 22:28
→ kkdlin:的確 書上那個公式連4.1K都會變成8K 04/03 22:40
→ kkdlin:所以說這個公式應該沒有所謂絕對的吧? 是這樣吧? thx 04/03 22:41
推 sunneo:要看用途來製作公式 04/03 22:55
→ kkdlin:瞭解 感謝解說 04/03 22:59