| 13 | |
| 14 | == BUGFIX: jfbterm (3) == |
| 15 | |
| 16 | * (續 [wiki:jazz/08-11-15 08-11-15@GMT-6 BUGFIX: jfbterm (1)]) |
| 17 | * (續 [wiki:jazz/08-11-16 08-11-16@GMT-6 BUGFIX: jfbterm (2)]) |
| 18 | * mmap 的 offset 參數必須是 sysconf 中定義 _SC_PAGE_SIZE 的倍數。('''offset''' must be a __'''multiple of the page size'''__ as returned by sysconf(_SC_PAGE_SIZE).) |
| 19 | * 使用 gdb 設定中斷點在 fbcomm.c 第 566 行並觀察變數狀態,可以知道送到 mmap 函數的 offset 參數內容為 1572864 。 |
| 20 | {{{ |
| 21 | (gdb) p p->slen |
| 22 | $5 = 1572864 |
| 23 | }}} |
| 24 | * 為了確認 offset 參數是否為 _SC_PAGESIZE 的整數倍,先撰寫測試程式,用 sysconf 取得目前系統的 _SC_PAGESIZE 屬性。 |
| 25 | {{{ |
| 26 | root@intrepid:~# cat > get_sc_pagesize.c << EOF |
| 27 | #include <unistd.h> |
| 28 | #include <stdio.h> |
| 29 | |
| 30 | int main() |
| 31 | { |
| 32 | printf("_SC_PAGESIZE = %ld\n",sysconf(_SC_PAGESIZE)); |
| 33 | } |
| 34 | EOF |
| 35 | root@intrepid:~# gcc get_sc_pagesize.c -o get_sc_pagesize |
| 36 | root@intrepid:~# ./get_sc_pagesize |
| 37 | _SC_PAGESIZE = 4096 |
| 38 | }}} |