[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
changing a function pointer in a module
From: |
Carles Pina i Estany |
Subject: |
changing a function pointer in a module |
Date: |
Fri, 16 Jan 2009 22:28:12 +0100 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
Hello,
I'm doing some more gettext stuff. Right now I have (relevant code for
the problem):
(briefly: the problem is that I'm changing a function pointer inside
gettext module code and it's not changed in other parts in Grub, even
when it's defined in include/grub/misc.h and only there)
include/grub/misc.h:
char* EXPORT_FUNC(grub_gettext_dummy) (const char *s);
char* EXPORT_FUNC((*grub_gettext)) (const char *s);
(I've done tests without EXPORT_FUNC and with EXPORT_VAR for
grub_gettext)
In normal/main.c, GRUB_MOD_INIT(normal) I have:
grub_gettext = grub_gettext_dummy;
In normal/cmdline.c, in grub_cmdline_run and after "ESC at any time
exits":
grub_printf("grub_gettext: %d\n",grub_gettext);
In gettext/gettext.c, GRUB_MOD_INIT(gettext):
grub_gettext = grub_gettext_translate;
grub_printf("grub_gettext: %d\n",grub_gettext);
First time that I type "C" in Grub menu, I read grub_gettext: XXXX.
Then I insmod my module and it prints grub_printf("grub_gettext:
%d\n",grub_gettext); (different value, of course).
I press ESC (to go to Grub menu) and C (to go to the command line) and I
get the first grub_gettext value, not the one that I changed.
How so? I don't declare grub_gettext again, how I can change (and check
that it's changed) but not changed back?
I even tried to not assign in normal/main.c (just in case that code part
is executed two times) but still it didn't work (again, value has not
been changed).
Thanks,
--
Carles Pina i Estany GPG id: 0x17756391
http://pinux.info
- changing a function pointer in a module,
Carles Pina i Estany <=