[devel] bonnie-1.4-alt3 (PAGE_MASK)

Victor Forsyuk =?iso-8859-1?q?force_=CE=C1_altlinux=2Eorg?=
Ср Фев 20 17:02:46 MSK 2008


On Wed, Feb 20, 2008 at 04:24:09PM +0300, Dmitry V. Levin wrote:
> On Wed, Feb 20, 2008 at 03:14:30PM +0200, Victor Forsyuk wrote:
> > On Wed, Feb 20, 2008 at 02:56:03AM +0300, Dmitry V. Levin wrote:
> > > Hi,
> > > 
> > > On Wed, Feb 20, 2008 at 02:41:37AM +0300, QA Team Robot wrote:
> > > > bonnie - Unix filesystem performance benchmark
> > > > * Mon Feb 18 2008 Victor Forsyuk <force на altlinux> 1.4-alt3
> > > > - Include sys/user.h for PAGE_MASK definition due to unexported
> > > >   asm/page.h in glibc-kernheaders-2.6.18-alt4.
> > > 
> > > Не надо использовать sys/user.h, если вы не gdb.
> > 
> > Rationale?
> 
> Так написано в самом sys/user.h:
> 
> /* The whole purpose of this file is for GDB and GDB only.  Don't read
>    too much into it.  Don't use it for anything other than GDB unless
>    you know what you are doing.  */

Yes, I know what I am doing. :)
 
> > > $ info libc 'Query Memory Parameters'
> > 
> > Это всё понятно. Проблема в том, что PAGE_MASK определяется по разному в BSD
> > и Linux. В BSD это "(PAGE_SIZE-1)", в Линуксе - "~(PAGE_SIZE-1)".
> 
> Т.е. в BSD и linux значения PAGE_MASK настолько принципиально отличаются?

Да. См. наприимер:
http://freebsd.active-venture.com/FreeBSD-srctree/newsrc/i386/include/param.h.html

> Как тогда этим PAGE_MASK можно пользоваться?

Самому смешно... Но я вижу только один разумный способ - таки брать из
заголовочных файлов системы.
 
> > Определять PAGE_MASK в исходнике - это убить переносимость. Следовательно,
> > нужно брать из хедеров системы.
> > 
> > Где я неправ?
> 
> Не стоит полагаться на PAGE_MASK.  Надёжнее вычислить маску из
> sysconf(_SC_PAGESIZE) согласно нуждам приложения.

Ну, с этим не поспоришь... надежнее конечно. OK, там в исходниках и так есть
ifdef'ы по системам. Придется растыкать там два разных вычисления page_mask.
Записал в TODO :)


 



Подробная информация о списке рассылки Devel