summaryrefslogtreecommitdiffstats
path: root/doc/tutorial/embedded-C.stp
diff options
context:
space:
mode:
Diffstat (limited to 'doc/tutorial/embedded-C.stp')
-rw-r--r--doc/tutorial/embedded-C.stp25
1 files changed, 25 insertions, 0 deletions
diff --git a/doc/tutorial/embedded-C.stp b/doc/tutorial/embedded-C.stp
new file mode 100644
index 00000000..6834d728
--- /dev/null
+++ b/doc/tutorial/embedded-C.stp
@@ -0,0 +1,25 @@
+%{
+#include <linux/utsname.h>
+%}
+
+function utsname:string (field:long)
+%{
+ if (down_read_trylock (& uts_sem))
+ {
+ const char *f =
+ (THIS->field == 0 ? system_utsname.sysname :
+ THIS->field == 1 ? system_utsname.nodename :
+ THIS->field == 2 ? system_utsname.release :
+ THIS->field == 3 ? system_utsname.version :
+ THIS->field == 4 ? system_utsname.machine :
+ THIS->field == 5 ? system_utsname.domainname : "");
+ strlcpy (THIS->__retvalue, f, MAXSTRINGLEN);
+ up_read (& uts_sem);
+ }
+%}
+
+probe begin
+{
+ printf ("%s %s\n", utsname(0), utsname(2))
+ exit ()
+}