docs: def read_vcpu_struct_field(self, field_name, x, y, p):
          """Read a value out of the VCPU struct for a specific core.
  
          Similar to :py:meth:`.read_struct_field` except this method accesses
          the individual VCPU struct for to each core and contains application
          runtime status.
  
          Parameters
          ----------
          field_name : string
              Name of the field to read from the struct (e.g. `"cpu_state"`)
  
          Returns
          -------
          value
              A value of the type contained in the specified struct field.
          """
          # Get the base address of the VCPU struct for this chip, then advance
          # to get the correct VCPU struct for the requested core.
          field, address, pack_chars = \
              self._get_vcpu_field_and_address(field_name, x, y, p)
  
          # Perform the read
          length = struct.calcsize(pack_chars)
          data = self.read(address, length, x, y)
  
          # Unpack and return
          unpacked = struct.unpack(pack_chars, data)
  
          if field.length == 1:
              return unpacked[0]
          else:
              # If the field is a string then truncate it and return
              if b"s" in pack_chars:
                  return unpacked[0].strip(b"\x00").decode("utf-8")
  
              # Otherwise just return. (Note: at the time of writing, no fields
              # in the VCPU struct are of this form.)
              return unpacked