diff options
author | David Smith <dsmith@redhat.com> | 2010-04-07 16:02:24 -0500 |
---|---|---|
committer | David Smith <dsmith@redhat.com> | 2010-04-07 16:02:24 -0500 |
commit | 65dd4b7405baeee812f6d41f0ee74824b601a47a (patch) | |
tree | 3deb1c995125d6a1e72d939c270173192044a3b3 /tapset/conversions-guru.stp | |
parent | 7dfee5e63d57d39677188b9edaa2cad366a1a6e1 (diff) | |
download | systemtap-steved-65dd4b7405baeee812f6d41f0ee74824b601a47a.tar.gz systemtap-steved-65dd4b7405baeee812f6d41f0ee74824b601a47a.tar.xz systemtap-steved-65dd4b7405baeee812f6d41f0ee74824b601a47a.zip |
Added kernel_pointer()/set_kernel_pointer() tapset functions.
* tapset/conversions.stp (kernel_pointer): New function.
* tapset/conversions-guru.stp (set_kernel_pointer): Ditto.
* testsuite/buildok/conversions-embedded.stp: Added kernel_pointer() test.
* testsuite/buildok/conversions.stp: Ditto.
* testsuite/buildok/set_kernel.stp: Added set_kernel_pointer() test.
* tapset/nfs.stp: Removed __d_loff_t() function. Uses new
kernel_pointer() function instead.
* testsuite/buildok/nfs-embedded.stp: Removed __d_loff_t() test.
Diffstat (limited to 'tapset/conversions-guru.stp')
-rw-r--r-- | tapset/conversions-guru.stp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tapset/conversions-guru.stp b/tapset/conversions-guru.stp index f914bb31..9d662ce3 100644 --- a/tapset/conversions-guru.stp +++ b/tapset/conversions-guru.stp @@ -115,3 +115,21 @@ deref_fault: /* branched to from kwrite() */ CONTEXT->last_error = CONTEXT->error_buffer; } %} + +/** + * sfunction set_kernel_pointer - Writes a pointer value to kernel memory. + * @addr: The kernel address to write the pointer to. + * @val: The pointer which is to be written. + * + * Description: Writes the pointer value to a given kernel memory address. + * Reports an error when writing to the given address fails. + */ +function set_kernel_pointer (addr:long, val:long) %{ /* guru */ + kwrite((void **) (intptr_t) THIS->addr, THIS->val); + if (0) { +deref_fault: /* branched to from kwrite() */ + snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer), + "kernel pointer copy fault at 0x%p", (void *) (uintptr_t) THIS->addr); + CONTEXT->last_error = CONTEXT->error_buffer; + } +%} |