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
[email protected]
http://lists.gnu.org/mailman/listinfo/grub-devel