| | 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 | }}} |