- Prev
- SystemTap Beginners Guide
- Next

### ⁠3.5.5. Clearing/Deleting Arrays and Array Elements

Sometimes, you may need to clear the associated values in array elements, or reset an entire array for re-use in another probe. Example 3.17, “cumulative-vfsreads.stp” in Section 3.5.4, “Processing Multiple Elements in an Array” allows you to track how the number of VFS reads per process grows over time, but it does not show you the number of VFS reads each process makes per 3-second period.
To do that, you will need to clear the values accumulated by the array. You can accomplish this using the `delete` operator to delete elements in an array, or an entire array. Consider the following example:
⁠

Example 3.18. noncumulative-vfsreads.stp

    global reads
    probe vfs.read
    {
      reads[execname()] ++
    }
    probe timer.s(3)
    {
      foreach (count in reads)
        printf("%s : %d \n", count, reads[count])
      delete reads
    }

In Example 3.18, “noncumulative-vfsreads.stp”, the second probe prints the number of VFS reads each process made within the probed 3-second period only. The `delete reads` statement clears the `reads` array within the probe.

Note

You can have multiple array operations within the same probe. Using the examples from Section 3.5.4, “Processing Multiple Elements in an Array” and Section 3.5.5, “Clearing/Deleting Arrays and Array Elements” , you can track the number of VFS reads each process makes per 3-second period and tally the cumulative VFS reads of those same processes. Consider the following example:

    global reads, totalreads

    probe vfs.read
    {
      reads[execname()] ++
      totalreads[execname()] ++
    }

    probe timer.s(3)
    {
      printf("=======\n")
      foreach (count in reads-)
        printf("%s : %d \n", count, reads[count])
      delete reads
    }

    probe end
    {
      printf("TOTALS\n")
      foreach (total in totalreads-)
        printf("%s : %d \n", total, totalreads[total])
    }

In this example, the arrays `reads` and `totalreads` track the same information, and are printed out in a similar fashion. The only difference here is that `reads` is cleared every 3-second period, whereas `totalreads` keeps growing.

- Prev3.5.4. Processing Multiple Elements in an Array
- Up
- Home
- Next3.5.6. Using Arrays in Conditional Statements