On Feb 10, 2006, at 02:55, Steven Rostedt wrote:
On Thu, 9 Feb 2006, Kyle Moffett wrote:
It would help a lot if you could post a link to your source code.
Not really. The question is pretty straight forward, so no source
is really necessary. Are you just asking this because you want to
stress the next point?
No, not at all! I suspect there is possibly/probably a better way to
do what the OP wants. Also, the particular example of putting a
pointer to a module function into the kernel core is quite racy and
hard to get the locking/memory-barriers correct for, so a review of
that part would probably be useful to the poster.
Let me point out (in case you don't know this already) that if you
do what you describe and distribute the result, you are
automatically licensing your ll.c file under the GPLv2. By
distributing a derivative of both the Linux kernel and your
proprietary module (You are taking Linux kernel sources and
modifying them explicitly for your module), the result must be GPL.
Well, just because something is under the GPL, doesn't mean you
need to post a link for all to have.
Oh of course not, but that's not what I was saying. I just wanted to
clarify that such deep linkage into the kernel implied that the full
terms of the GPL applied to any distribution.
Also, I think what you are describing is basically impossible. I
believe what you want to do is this:
Oops, this isn't what I meant to say. I meant that it's _possible_
but hard to get correct.
/* in shm.c */
unsigned long long (*ptr1)(int);
EXPORT_SYMBOL(ptr1);
However this makes it impossible to reliably remove your module,
because a process could race entering the function as the module
loader is trying to remove the module.
Not really impossible. As I have done in my (yes GPL) logdev
module http://www.kihontech.com/logdev/logdev-2.6.15-rt16.patch
I have a "hooks" file that has all the functions I need for the
loadable module. But to call any of the hooks, you must call
wrapper functions that grabs a spinlock before calling the
function. This spinlock is also used to reset the function pointer
when removing the module. Yes, I know that this is inefficient,
but when the module is compiled into the kernel, those wrapper
functions also turn into direct functions without the need of the
spinlock, or redirected function pointers.
This is precisely why I asked the original poster to send a link to
code (doesn't have to be the whole thing, but even just the pertinent
snippets of the module code). You or I (or anybody else whose reading
this thread) could easily help them verify their locking and pointer
usage.
Cheers,
Kyle Moffett
--
I lost interest in "blade servers" when I found they didn't throw
knives at people who weren't supposed to be in your machine room.
-- Anthony de Boer
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]