#! stap -p2
probe begin {
// basic @cast test, with and without specifying kernel
println(@cast(0, "task_struct", "kernel")->tgid)
println(@cast(0, "task_struct", "kernel")->tgid)
// check module-search paths
println(@cast(0, "task_struct", "foo:kernel:bar")->tgid)
// would be nice to test usermode @cast too,
// but who knows what debuginfo is installed...
// check modules generated from headers
println(@cast(0, "task_struct", "kernel<linux/sched.h>")->tgid)
println(@cast(0, "timeval", "<sys/time.h>")->tv_sec)
// sometimes multiple headers are needed in tandem
println(@cast(0, "task_struct", "kernel<linux/sched.h><linux/fs_struct.h>")->fs->umask)
// make sure that bogus @casts can get optimized away
@cast(0, "task_struct")->no_such_field
@cast(0, "task_struct")->parent->no_such_field
@cast(0, "no_such_type")->tgid
@cast(0, "task_struct", "no_such_module")->tgid
// PR11556: we should be able to treat the initial pointer like an array too
println(@cast(0, "task_struct", "kernel")[42]->tgid)
}