Hello;

> 1. the author is somewhat confused over the usage of mmap, there's
>    no need to malloc memory beforehand and then overmap it. in fact,
>    it's a very bad thing to do.

I noticed another clear mistake in this package a long time ago and
recompiled in order to fix my own version. I hoped that someone else
would fix it before I upgraded again, but it has not happened, so I
finally get around to reporting it...

The use of "volatile" in the code does not make very much sense;
most noticeably, the declaration:

> /* Not the address but what it points to is volatile. */
> unsigned char * volatile radeon_cntl_mem;

appears near the top of radeontool.c. The comment that explicitly
contradicts what the code says, since "unsigned char * volatile"
declares a volatile pointer to non-volatile unsigned char, not a
non-volatile pointer to volatile unsigned char (this is consistent
with how const works).

If you don't trust me about this, ask cdecl:
$ cdecl
Type `help' or `?' for help
cdecl> explain unsigned char * volatile o;
declare o as volatile pointer to unsigned char
cdecl> explain volatile unsigned char * o;
declare o as pointer to volatile unsigned char

To really fix this, a lot of changes might be necessary in radeontool.c
to make the types agree after changing this, but the solution that I
used when I compiled my own version before is simple: remove "-O2" from
CFLAGS in the Makefile. volatile has no effect in unoptimized programs,
so doing this completely eliminates the issue.

I do not have any evidence that doing this fixes any particular
problem with radeontool, however; paraphrasing Donald E. Knuth,
"I have only proved it [in]correct, not tried it."

Eliot Setzer



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to