- Prev
- SystemTap Beginners Guide
- Next

#### ⁠3.3.2.2. Typecasting

In most cases SystemTap can determine a variable's type from the debug information. However, code may use void pointers for variables (for example memory allocation routines) and typing information is not available. Also the typing information available within a probe handler is not available within a function; SystemTap functions arguments use a long in place of a typed pointer. SystemTap's `@cast` operator (first available in SystemTap 0.9) can be used to indicate the correct type of the object.
The Example 3.9, “Casting Example” is from the `task.stp` tapset. The function returns the value of the `state` field from a `task_struct` pointed to by the long `task`. The first argument of the `@cast` operator, `task`, is the pointer to the object. The second argument is the type to cast the object to, `task_struct`. The third argument lists what file that the type definition information comes from and is optional. With the `@cast` operator the various fields of this particular `task_struct` `task` can be accessed; in this example the `state` field is obtained.
⁠

Example 3.9. Casting Example

    function task_state:long (task:long)
    {
        return @cast(task, "task_struct", "kernel<linux/sched.h>")->state
    }

- Prev3.3.2. Target Variables
- Up
- Home
- Next3.3.2.3. Checking Target Variable Availability