I think the key thing is that the NT APIs allow you to do things like
handle := open(API-name);
FOREACH symbol IN handle.symbollist DO
IF is_function(symbol) THEN
...
... dynamically create code to marshall arguments,
... intercept syscall, and then call original syscall.
...
ENDIF
ENDDO
I.e. you do not have to know, a priori, what functions you want to intercept
- as you would have to if placing something on the path.
You can intercept them all.
Moreover, you can intercept a call to foo(), have it call your_foo(),
and then allow it to continue on to call the default foo().
Come to think of it, I suspect that Beowulf has something similar
- note that "marshalling arguments" is a classic RPC (remote procedure
call) term. Or maybe Beowulf doesn't need it?
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/