On Wednesday 26 April 2006 12:00, Marco Gerards wrote:
> How about using a macro as a wrapper.  So something like:
>
> #define grub_malloc(x)                \
>   {                           \
>      grub_dprintf (...);      \
>      grub_malloc_int (...)    \
>   }
>
> In that case you can use the existing debugging framework we are all
> used to.

Clearly, I don't want to use grub_dprintf for two reasons:

- I need to print messages twice in some functions. If I use dprintf, it 
prefixes a filename and a line number every time. This is too annoying.

- The use of grub_dprintf requires the modification of an environment 
variable. So this affects the memory manager and the user environment. When 
the memory manager is buggy, I don't want such a side effect.

Frankly speaking, I tried grub_dprintf myself, and abandoned it, due to these 
problems. My problem was actually that I forgot to initialize a local 
variable before freeing it. When using grub_dprintf, by setting a variable, 
the stack was modified, then the fatal error disappeared as a side effect. 
This was extremely confusing. Compared with this, setting a global variable 
does not affect the memory status very much. So I will never go back to 
grub_dprintf for this purpose.

The idea of code sharing is usually very good, but not always good.

Okuji


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to